Python导入问题
我有一些问题,在我理解python如何导入模块时,这些问题看起来像是一些空白。例如,我有一个名为Python导入问题,python,import,Python,Import,我有一些问题,在我理解python如何导入模块时,这些问题看起来像是一些空白。例如,我有一个名为somemodule的模块,它有两个子模块a.py和b.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" 现在,如果我想调用我得到的任何模块Impor
somemodule
的模块,它有两个子模块a.py
和b.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
:
导入错误:无法导入名称b
我怎么了?这里有递归导入: a导入b哪个导入a哪个导入b哪个
此外,请确保文件夹
somemodule
中有一个\uuuu init\uuuuuu.py
文件,您有一个循环引用。导入模块a,然后导入模块b。但是模块b从模块a导入函数a。但在它试图这样做的时候,a还没有被定义。请记住,Python导入可以有效地执行模块
解决方案似乎是移动函数定义,使它们出现在导入之前
或者,正如@lazyr所建议的,将import语句移动到函数内部,以便在调用函数时进行导入,而不是在模块导入时进行导入。您的文件布局是什么?如果a.py和b.py并排,为什么要导入某个模块?一些读数:或将其中一个导入移动到函数定义中。@lazyr是的,这可能更好,但递归导入是完全可能的