2013-05-10 55 views
8

我明白這個問題已被多次詢問,但在閱讀完這些建議的修復之後,我仍然難倒了。接收導入錯誤:沒有模塊命名爲***,但有__init__.py

我的項目結構如下:

Project 
     | 
     src 
     | 
     root - has __init__.py 
      | 
      nested - has __init__.py 
        | 
        tests - has __init__.py 
        | 
        utilities - has __init__.py 
        | 
        services - has __init__.py 

我已經成功地從Eclipse運行一個單元測試迴歸類沒有任何問題。

當我試圖運行在命令行相同的類(如誰在將運行一套用不上到Eclipse的其他用戶),我收到錯誤:

ImportError: No module named 'root' 

正如你從上面可以看到,模塊根目錄有一個__init__.py 所有__init__.py模塊都是完全空的。

我們將非常感謝您的幫助。

+1

是'你的'sys.path中src' '?你是在那個目錄下運行Python命令還是你明確地在你的'sys.path'(或'PYTHONPATH'環境變量)中添加了'src'? – 2013-05-10 11:10:30

+0

@Martijin:我試圖從'.. \ tests目錄中執行。' 'scr'未被添加到'sys.path'和'PYTHONPATH'。我不知道它需要,這是第一次嘗試通過命令行執行。我會嘗試添加目錄到'PYTHONPATH' – 2013-05-10 11:15:19

+4

我不會建議添加到路徑。我建議你學習如何設置setup.py,這意味着實際上創建一個Python項目。從長遠來看,這可以幫助你。 – CppLearner 2013-05-10 11:15:57

回答

11

嘗試將sys.path.append添加到導入列表中。

import sys 
sys.path.append("/Project/src/") 
import root 
import root.nested.tests 
+0

謝謝,正是需要的。 – 2013-05-10 11:24:43

+0

嘗試這樣做時,我得到'NameError:name'sys'未定義'。 – CGFoX 2017-03-07 10:30:27

+2

@CGFoX你需要先導入sys,回答修改才能體現這個 – 2017-03-07 14:07:25

7

只是對任何人注意到誰在這個問題上到達時,使用的是什麼格斯Ë顯示,在接受答案和一些進一步的經驗,我發現下面幾點是非常有用的,以確保我可以運行我的程序如果需要的話,我的機器上的命令行或其他同事的命令行。

import sys 
import os 
sys.path.append(os.path.join(os.path.dirname(__file__), "..", "..")) 

當我執行「主」方法,它位於在「嵌套」目錄,它確保了「src」目錄是在執行時加入到PYTHONPATH意味着所有以下進口將不拋出一個錯誤。

顯然,你需要調整數量「..」參數傳遞給os.path.join()方法由位置在哪裏你的主要方法是從

+0

這節省了我很多的痛苦。謝謝! – 2017-01-18 16:30:11

0

執行的程序確定如果有人土地位置:

我也遇到過這個錯誤。就我而言,我在path.sys.append(...)使用~/my/path/,並修復與顯式路徑名稱替換~(您可以來電諮詢,如果你鍵入pwd當你在~

相關問題