2015-01-20 18 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