2017-08-17 69 views
1

我有一個名爲proja的項目文件夾。它包含幾個文件:導入成功的一個文件,但沒有在同一目錄中的另一個

"__init__.py" 
classa.py 
classb.py 
classc.py 

我有一個名爲folderB的proja子文件夾。它也有一個「」init .py「」。該文件夾包含一個py腳本,其中包含以下導入語句。它導入classa,但在classb上失敗。

from classa import classa 
from classb import classb 
from class import classc 

如果我從proja運行腳本不要緊:「蟒蛇FolderB中/ imptest.py」或我的CD到FolderB中並運行:「蟒蛇imptest.py」。

它總是失敗:「導入錯誤:沒有模塊名爲ClassB的......」

爲什麼會從一個文件導入而不是另一個在同一個位置?

+0

我發現它工作,如果我做一個sys.path.append ... 但我不明白爲什麼它可以在該目錄中的一個文件,但不是在同一目錄中的另一個文件。如果可能的話,我想避免sys.path.append。謝謝。 –

回答

0

確保沒有在文件中的函數或名稱classb的方法classb.py

一旦運行這個文件:

import classa 
import classb 
import classc 

如果這個命令的工作,那麼文件路徑都ok,你應該看看在文件裏面。

如果你這樣做,它的工作原理檢查文件內部classb.py,
否則發佈錯誤。我會幫你的。

+0

謝謝。在驗證文件名,類名等正確後,我修改了我的導入語句以包含從我的$ PYTHONROOT的根目錄中的完整路徑。這工作。 從parentdir.proja進口classc parentdir.proja進口ClassA的 從parentdir.proja進口ClassB的 不過不知道爲什麼一個文件導入,另一個在同一目錄下沒有。但是,我有一個工作,適當的方法來完成這項工作。 –

相關問題