12

我一直在为我的包在最后一小时进口而苦苦挣扎。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.pyscript_c.pyscript_a.py访问代码和代码。我怎样才能做到这一点?

如果我把一个简单的import script_bscript_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访问这两个文件?

+0

[如何在python中实现这个相对导入]可能的副本(http://stackoverflow.com/questions/4655526/how-to-accomplish-this-relative-import-in-python) –

回答

13

从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

+0

如何访问' script_b'? –

+0

更新了答案 – tobspr