2017-09-14 65 views
-1

我有項目結構是這樣的:如何擁有多目錄或多包python項目?

package1/__init__.py 
package1/file1.py 
package1/file2.py 

package2/__init__.py 
package2/file1.py 
package2/file2.py 

__init__.py 
script1.py 
script2.py 

不幸的是,我發現,我只能從根目錄運行的代碼,例如,從script1.py。如果我從pakage2/file2.py運行說,文件之間的所有鏈接都會丟失,即找不到從package2導入的所有package1

Python中正確的目錄結構是什麼?它對所有目錄的包結構有何限制?

回答

0

您也需要雙方package1package2是一個封裝內,在這種情況下,他們可以從彼此俱進:

root_package/ 
    __init__.py 
    package1/ 
    package2/ 

將軟件包添加到您的PYTHONPATH,在這種情況下,任何Python腳本上您的系統可以把它們導入:

export PYTHONPATH="$PYTHONPATH:/path/to/package1:/path/to/package2" 

更新:如果直接運行腳本,你不能導入作爲一個包的一部分。你應該做的就是定義類和函數根據需要在你的包,然後從另一個腳本導入:

script.py

from package1 import ... 
from package2 import ... 
+0

對不起,我當然'__init __ py'文件根目錄也是如此,我修復了這個問題 – Dims

+0

無論如何,它並沒有幫助 – Dims

+0

「另一個腳本」你的意思是「腳本在根目錄但不在任何子目錄中」? – Dims