可能重复:
Python: Circular (or cyclic) imports
Circular dependency in Python
我有一个Python包,其中包含两个相互导入的模块。也就是说,在模块A中我们有行
from B import b
在模块B中我们有一行
from A import a
当我尝试加载包含这些模块的包时,我收到以下错误
ImportError:无法导入名称
有没有办法避免这个错误(没有将两个模块组合成一个大模块AB)?
答案 0 :(得分:3)
将它们拆分为更多模块 - 例如,您可以将a
分解为自己的A
和B
所依赖的模块。
使用import A
和import B
代替from ...
变体 - 这将使导入成功,即使您要导入的名称尚未绑定到进口时间。
在您需要来自其他模块的符号的特定位置使用功能级别导入。 (我不太喜欢这个选项,但它有效。)
答案 1 :(得分:0)
你不能这样做,因为你有一个循环引用。创建一个新模块并在那里导入:
from B import b
from A import a