2015-10-17 18 views
0

level1/level2/bar.py,試圖導入一個變量foolevel1/foo.py的時候,我發現了一個錯誤:的Python導入錯誤:沒有模塊名爲path.X,但可與nosetests

ImportError: No module named level1.foo 

1級/ foo.py

bar = 123 

1級/ 2級別/ bar.py

import level1.foo 
print level1.foo.bar 

但運行nosetests定義在level1/level2/test_bar.py,它能夠找到level1.foo.py

1級/級別2/test_bar.py

import level1.foo 

def test_foobar(): 
    print level1.foo.bar 

爲什麼可能一個nosetest期間通過level1.foo進口,但不能用常規的python腳本這樣做呢?

這裏是文件結構,每個目錄中也有__init__.py文件。

enter image description here

Additionallly,我使用PyCharm的朋友似乎沒有遇到這樣的問題。 PyCharm是否會自動處理這些導入,但會在PyCharm之外打破,除非項目的根目錄被添加到PYTHONPATH

回答

1

這聽起來像是一個PYTHONPATH問題。如果您正在運行app目錄中的nosetests,則可以使用level1.foo導入。如果您從apps/level1/level2目錄運行level1/level2/bar.py,則level1.foo不會(必然)位於您的路徑中。

相關問題