有構建一個Python項目時要記住的一個關鍵的事情:的當前目錄運行腳本會自動添加到sys.path
的開頭。
所以,如果你把你的main.py
腳本你的包在一個頂層容器目錄外,這將保證包裝的產品進口會一直工作,無論身在何處的腳本是從執行。爲了說明這一點,這裏是一個簡單的項目結構:
project/
main.py
package/
__init__.py
app.py
ui/
__init__.py
mainwindow.py
的main.py
腳本應該是非常小的,並且僅僅是這樣的:
if __name__ == '__main__':
import sys
from package import app
sys.exit(app.run())
和app
模塊內,該GUI模塊會像這樣導入:
from package.ui.mainwindow import Ui_MainWindow
可以在包樹的任何位置使用相同的導入語法。所以,如果你增加了一個子包是這樣的:
project/
main.py
package/
...
dialogs/
__init__.py
search.py
那麼search
模塊將導入其GUI模塊是這樣的:
from package.ui.search import Ui_SearchDialog
如果你組織你的所有Python項目以這種方式,應該從來沒有任何需要操縱sys.path
爲了讓您的本地進口正常工作。
從根開始在'sys.path'中放置完整路徑 – qurban