60

在过去的一个小时里,我一直在为我的包裹中的导入而苦苦挣扎。

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

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代码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

我怎样才能访问这两个文件script_a.py

4

1 回答 1

68

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

另请参阅:绝对与相对进口

于 2016-04-24T18:02:02.077 回答