2015-01-20 22 views
0

當子目錄中的模塊從同一目錄中的另一個模塊導入時,我收到導入錯誤。我相信錯誤是由於計算機上的權限而引起的,但我在診斷時遇到了問題。文件夾結構如下。子目錄中的ImportError

/test_import 
    test.py 
    /imports 
     __init__.py 
     aa.py 
     bb.py 

隨着運行下面我當含有含

def myfun(): 
    print("hello") 

和test.py

from aa import myfun 

aa.py含

if __name__ == "__main__": 
    from imports import bb 
    bb.myfun() 
我的電腦上

bb.py我得到了預期的結果

C:\Users\mgilbert\test_import>python test.py 
hello 

但是在不同的盒子,我收到以下錯誤

import error

,當我嘗試運行任何原因>蟒蛇test.py這會導致導入錯誤但是如果我開始的IPython並做相關的進口這工作正常嗎?

回答

0

您正在使用隱式相對導入。這些no longer exist in Python 3,因爲他們坦白比他們的價值更麻煩。

更改導入在bb.py這樣:

from imports.aa import myfun 
+0

謝謝!這解決了這個問題。任何想法爲什麼這個錯誤零星發生?我在一臺機器上工作,而不是另一臺機器?另外,如果我的函數bb.py被命名爲imports.py,這似乎會導致問題,在這種情況下最好使用點符號嗎?即從.aa導入myfun – mgilbert 2015-01-21 20:51:58

+0

我沒有看到任何明顯的原因,爲什麼應該。但隱含的相對進口被廣泛認爲是邪惡的。 – Kevin 2015-01-21 20:54:33