Python 相对导入脚本向上两级
Python relative-import script two levels up
过去一个小时我一直在努力处理包裹中的导入问题。
我的目录结构如下:
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_a.py
中的 script_c.py
中的代码。我该怎么做?
如果我在script_a.py
里面放一个简单的import script_b
,当我运行
from main_package.folder_1.folder_2 import script_b
我遇到了一个
ImportError: no module named "script_b"
对于访问script_c.py
,我没有头绪。我找不到有关访问上一级文件的任何信息,但我知道我可以使用
导入上一级文件
from .. import some_module
如何从 script_a.py
访问这两个文件?
要从 script_a 访问 script_c 和 script_b,您将使用:
from ...folder_3 import script_c
from . import script_b
或者,如果您使用 python3,您可以通过以下方式从 script_a 导入 script_b:
import script_b
但是,您可能应该使用绝对导入:
from mypackage.folder_3 import script_c
from mypackage.folder1.folder2 import script_b
另见:Absolute vs Relative imports
过去一个小时我一直在努力处理包裹中的导入问题。
我的目录结构如下:
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_a.py
中的 script_c.py
中的代码。我该怎么做?
如果我在script_a.py
里面放一个简单的import script_b
,当我运行
from main_package.folder_1.folder_2 import script_b
我遇到了一个
ImportError: no module named "script_b"
对于访问script_c.py
,我没有头绪。我找不到有关访问上一级文件的任何信息,但我知道我可以使用
from .. import some_module
如何从 script_a.py
访问这两个文件?
要从 script_a 访问 script_c 和 script_b,您将使用:
from ...folder_3 import script_c
from . import script_b
或者,如果您使用 python3,您可以通过以下方式从 script_a 导入 script_b:
import script_b
但是,您可能应该使用绝对导入:
from mypackage.folder_3 import script_c
from mypackage.folder1.folder2 import script_b
另见:Absolute vs Relative imports