关于导入:模块之间的python依赖关系

Python dependency between modules

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Python: Circular (or cyclic) imports
Circular dependency in Python

我有一个python包,其中包含两个相互导入的模块。也就是说,在模块A中,我们有一条线

1
from B import b

在模块B中我们有线路

1
from A import a

当我试图加载包含这些模块的包时,会出现以下错误

ImportError: cannot import name a

有没有办法避免这个错误(不把两个模块组合成一个大模块AB)?


  • 把它们分成更多的模块——例如,你可以把a分解成aB都依赖的模块。

  • 使用import Aimport B而不是from ...变体——这将使导入成功,即使您要导入的名称在导入时尚未绑定。

  • 在需要其他模块的符号的特定位置使用函数级导入。(我不太喜欢这个选项,但它是有效的。)


  • 您不能这样做,因为您有一个循环引用。创建一个新模块并在其中导入:

    1
    2
    from B import b
    from A import a