我正在編寫一個Python(Python3)應用程序(不是包),並對正確的目錄結構有一些懷疑。目前,我有這樣的:在應用程序中導入模塊,而不是包
myapp/
__init__.py
launch.py
core/
__init__.py
some_core_class.py
other_core_class.py
gui/
__init__.py
some_gui_class.py
other_gui_class.py
我想要的應用程序與python launch.py
在我的目錄結構開始從任何地方 - 當然的前面加上正確的路徑,以launch.py
,例如python myapps/myapp/launch.py
。
在我的模塊中,我使用絕對導入,例如在some_core_class.py
我寫from myapp.core.other_core_class import OtherCoreClass
。我在launch.py
中使用了相同的方式,例如, from myapp.core.some_core_class import SomeCoreClass
。
但隨後在ImportError: No module named 'myapp'
寫python launch.py
結果啓動它,例如直接從DIR myapp
。我發現我可以通過將launch.py
中的輸入更改爲from core.some_core_class import SomeCoreClass
來使其工作,但這在我看來並不是正確的絕對輸入,並且與其他文件中的輸入不一致。
解決我的問題的最佳方法是什麼?我想避免將myapp
添加到PATH
環境變量,這需要用戶或安裝程序進行手動編輯。我應該如何更改我的代碼或導入以使應用程序可以從任何地方啓動?這甚至可能嗎?
似乎沒有其他答案發布到這個問題,所以我認爲這是我會選擇的解決方案。 –