Python relative-import script two levels up
在过去的一小时里,我一直在为我的包裹中的进口做斗争。
我有一个像这样的目录结构:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 |
我想访问
如果我在
1 | from main_package.folder_1.folder_2 import script_b |
我遇到了一个
1 | ImportError: no module named"script_b" |
为了访问
1 | from .. import some_module |
如何从
要从script_a访问script_c和script_b,您将使用:
1 2 | from ...folder_3 import script_c from . import script_b |
或者,如果您使用python3,您可以通过使用以下命令从script_a导入script_b:
1 | import script_b |
但是,您应该使用绝对导入:
1 2 | from mypackage.folder_3 import script_c from mypackage.folder1.folder2 import script_b |
另见:Absolute vs Relative进口