Python 相对导入脚本升了两级

过去的一个小时里,我一直在为进口货苦苦挣扎。

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

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.pyscript_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

如何从 script_a.py访问这两个文件?

59099 次浏览

要从 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

另见: 绝对进口与相对进口