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