Python导入问题

时间:2011-08-26 13:39:15

标签: python import

我有一些问题,在我理解python如何导入模块时看起来像一些空格。例如,我有一个名为somemodule的模块,其中包含两个子模块a.pyb.py

<小时/> a.py:

的内容

from somemodule.b import b

def a():
    b()
    print "I'am A"

内容b.py

from somemodule.a import a

def b():
    a()
    print "I'am B"

<小时/> 现在,如果我想调用任何模块,我会ImportError

  

ImportError:无法导入名称b

我怎么了?

2 个答案:

答案 0 :(得分:6)

你有一个循环参考。导入模块a然后导入模块b。但模块b从模块a导入函数a。但在它试图这样做的时候,还没有定义。请记住,Python导入有效地执行模块。

解决方案似乎是移动函数定义,使它们出现在导入之前。

或者,正如@lazyr建议的那样,将import语句移动到函数内部,以便在调用函数时进行导入,而不是在模块导入时。

答案 1 :(得分:3)

您在此处进行递归导入: 进口b进口b进口b ..... .....

此外,请确保文件夹__init__.py

中有somemodule个文件