我遇到了從文件導入所有方法的問題,以便我可以將它用作包。我有以下幾點:從Python包中導入方法
myapp.py
mypackage/
mypackage/__init__.py
mypackage/mypackage.py
裏面的mypackage.py
我有method1()
和method2()
。 myapp.py
裏面我想這樣做:
import mypackage
mypackage.method1()
但是這不起作用。相反,我需要做mypackage.mypackage.method1()
,我不知道該怎麼做來解決這個問題。我發現的唯一方法是刪除__init__.py
並將mypackage.py
重命名爲__init__.py
,這似乎不正確。
我需要在init文件中導入所有方法,因此我不必始終輸入包名兩次?
爲什麼看起來不正確?如果'mypackage'中只有兩個方法,那麼爲什麼不在'__init __。py'中定義它們呢?甚至只需用'mypackage.py'替換目錄並將它們寫入;你不需要模塊的目錄開銷。或者,將它們導入到__init __。py中。 – jonrsharpe
嗯,我有很多超過2這只是一個例子,在未來,我可能希望將它們分爲更多的文件組織。我的問題是如何將它們導入到'__init __。py'中,所以我不必指定單個文件名?我嘗試過。 import *'和'import mypackage',但沒有任何東西允許我執行'mypackage.method1()'。我同意沒有文件夾會更好,但pypi似乎不支持。 – Dendory
'from .mypackage import *'?另外:*「未來我可能想要」*建議你應該閱讀YAGNI!從簡單的版本開始,然後在發現你的時候變得複雜*實際上需要*。 – jonrsharpe