我知道這個問題在這裏已被多次詢問,我可能讀了大多數答案(包括this和that)以及python文檔,但仍然無法找到我非常簡單的導入問題的答案。這很簡單,我必須錯過一些愚蠢的事情,但我還沒有看到它。 我已經安裝的結構如下:Python無法從子目錄中導入模塊,即使目錄中有一個名爲__init.py__的文件
myproject
myscript.py
MyPackage
__init.py__
mymodule.py
只想加載從myscript.py
mymodule.p
Y(或應該是相同的命令行python解釋)。
myscript.py
包含:
#!/usr/bin/python
import MyPackage
__init.py__
包含:
from . import mymodule
mymodule.py
包含
#!/usr/bin/python
def myfunction():
print "mymessage"
我的目標是調用myfunction
從myscript.py
但如果我嘗試調用模塊我得到
$python myscript.py
Traceback (most recent call last):
File "myscript.py", line 2, in <module>
import MyPackage
ImportError: No module named MyPackage
我已經嘗試過:
- 我試圖OSX和Ubuntu Linux下的一切,以減少故障的Python安裝的可能性。
- 我將
PYTHONPATH
環境變量設置爲myproject
目錄以及.
以及兩者。 - 我離開
__init.py__
空白 - 我試過import語句也從Python解釋器從
myproject
目錄 我嘗試以下import語句開始:
from MyPackage import mymodule import MyPackage.mymodule import MyPackage.mymodule as module
都沒有成功(同樣的錯誤消息)。
如果我將mymodule.py
放在項目目錄中而不使用包,導入可以正常工作。但我不明白爲什麼從子包導入不起作用。 任何想法如何讓我的工作?
感謝您的幫助!
您需要驗證'myproject'目錄是否列在'sys.path'中。在導入'MyPackage'之前,'sys.path'是否包含正確的目錄? –
如果我啓動解釋器並執行'import sys'和'print sys.path',它會顯示一個包含正確「myproject」目錄路徑的列表:'['','/ Users/michael/Entwicklung/python/myproject ',...]' – mhelwig
對,所以包應該是可導入的。包中可能有*不同*導入錯誤*。你說你已經嘗試了一個空的'__init __。py'。你可以再試一次,但確保你刪除了所有'* .pyc'文件。也許在'__init __。py'中添加一個'print'導入的''行。 –