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