Python相对导入脚本有两个级别

时间:2016-04-24 17:55:59

标签: python python-3.x python-import directory-structure relative-import

在过去的一小时里,我一直在为我的包装中的进口做斗争。

我有一个像这样的目录结构:

main_package
 |
 | __init__.py
 | folder_1
 |  | __init__.py
 |  | folder_2
 |  |  | __init__.py
 |  |  | script_a.py
 |  |  | script_b.py
 |
 | folder_3
 |  | __init__.py
 |  | script_c.py

我想访问script_b.py中的代码以及来自script_c.py的{​​{1}}代码。我怎么能这样做?

如果我在script_a.py内放置一个简单的import script_b,那么当我运行

script_a.py

我遇到了一个

from main_package.folder_1.folder_2 import script_b

要访问ImportError: no module named "script_b" ,我不知道。我无法找到有关访问两级文件的任何信息,但我知道我可以将文件导入一级

script_c.py

如何从from .. import some_module

访问这两个文件

1 个答案:

答案 0 :(得分:27)

要从script_a访问script_c和script_b,您可以使用:

import script_b

或者如果你使用python3,你可以通过使用:

从script_a导入script_b
from mypackage.folder_3 import script_c
from mypackage.folder1.folder2 import script_b

但是,您应该使用绝对导入:

{{1}}

另见:Absolute vs Relative imports