2017-09-18 74 views
-1

在將此標記爲重複項之前,請閱讀整個問題,它不是通常的sys.path導入錯誤。不尋常的Python導入錯誤

這是模塊的目錄結構,我試圖導入

root 
|_moduleDir1 
| |_ myModule1.py 
| |_ __init__.py 
|_ moduleDir2 
    |_ myModule2.py 
    |_ __init__.py 

我用兩臺不同的機器工作。我的腳本在一個上運行良好,另一方面我得到導入錯誤。起初我認爲這只是一個環境問題,但我認爲還有其他事情正在發生。當我運行我的腳本發生故障的機器上

import moduleDir1.myModule1 

進口myModule1.py它拋出下面的導入錯誤。

ImportError: No module named myModule1 

的原因,我不相信這是一個PATH問題或sys.path的問題是,我已經添加了根目錄到相應的環境變量,當我添加

import moduleDir2.myModule2 

以上myModule1在腳本中導入,它不會拋出導入錯誤,所以我知道root在sys.path中,否則會爲它們拋出錯誤。另外我不認爲這是init.py的問題,因爲它可以在另一臺機器上正常工作。這兩臺機器都運行窗口10.

我很難過,我搜索並測試了幾個小時,沒有運氣。我能找到的所有帖子都是init.py或sys.path的問題,並且這些不是我的問題的正確解決方案。任何建議或想法,爲什麼我可能會得到一個模塊的導入錯誤,而不是其他的,當他們在同一個父目錄下,將不勝感激。

+3

請顯示試圖導入'myModule1'的代碼,並顯示完整的錯誤消息。 – BrenBarn

+0

試試'import moduleDir1',然後'print(moduleDir1 .__ file __)'。輸出是你期望的嗎?如果在'sys.path'之前有另一個名爲'moduleDir1'的目錄,或者名爲'moduleDir1.py'的文件將被導入,如果沒有名爲'myModule1'的子模塊,那麼你會得到這個錯誤。 – BrenBarn

+0

你擊中了頭部!還有另一個模塊名稱相同的東西位於系統的其他地方,那就是導入的東西。非常感謝!你救了我誰知道多少時間! – jerrik

回答

0

其中一個原因可能是引發導入錯誤的第二臺機器不具有目錄的讀取權限。請檢查目錄的權限。

+0

這是一個好主意,但經過雙重檢查後,第二臺機器用戶對所涉及的所有目錄都具有讀取權限。 – jerrik

+0

你可以做一件事。只需編寫小代碼在第二臺機器上使用python代碼在位置上創建文件。如果此文件已創建,則模塊必須訪問。 – PramodG