2013-07-31 160 views
1

SO中存在很多此問題稍有變化的問題。我見過的答案都沒有解決我的問題,所以我問了一個新問題。ImportError:No module named _____

我有這樣的文件夾結構:

 
/myapp/ 
    \__init__.py 
    modu1.py 
    modu2.py 

__init__.py是空

modu1.py

class TestMod1Class(): 
    def msg(self): 
     print "Hello World!" 

modu2.py

import myapp.modu1 

obj = myapp.modu1.TestMod1Class() 
obj.msg() 

如果從目錄/ MyApp的/我跑python modu2.py我得到:

Traceback (most recent call last): 
    File "modu2.py", line 1, in <module> 
    import myapp.modu1 
ImportError: No module named myapp.modu1 



什麼,我哪裏做錯了?我讀過the docs,但仍然無法理解這一點。

回答

2

If from the directory /myapp/ I run python modu2.py i get

如果您直接運行模塊,它不會作爲它可能屬於的包的一部分運行。因爲這樣的進口myapp.modu1將尋找myapp/myapp/modu1.py,顯然不是它在哪裏。

如果你想myapp包工作,你必須從根目錄內開始執行。因此,添加到myapp文件夾main.py下一:

/main.py 
/myapp 
    /__init__.py 
    /modu1.py 
    /modu2.py 

從那裏,你可以這樣做:

import myapp.modu2 

然後,你必須開始與python main.py

6

您已位於myapp模塊中,因爲它位於myapp文件夾中。因此,您不需要使用import myapp.modu1語法,而應該使用import modu1

例如:

import modu1 

obj = modu1.TestMod1Class() 
obj.msg() # output: Hello World! 

注:我在Python 3測試,因爲我沒有做2我的機器上,但它應該是相同的(我做編輯modu1使用新print語法) 。