模块之间的Python依赖

时间:2012-02-17 16:20:10

标签: python import python-2.7 python-module

  

可能重复:
  Python: Circular (or cyclic) imports
  Circular dependency in Python

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

from B import b

在模块B中我们有一行

from A import a

当我尝试加载包含这些模块的包时,我收到以下错误

  

ImportError:无法导入名称

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

2 个答案:

答案 0 :(得分:3)

  1. 将它们拆分为更多模块 - 例如,您可以将a分解为自己的AB所依赖的模块。

  2. 使用import Aimport B代替from ...变体 - 这将使导入成功,即使您要导入的名称尚未绑定到进口时间。

  3. 在您需要来自其他模块的符号的特定位置使用功能级别导入。 (我不太喜欢这个选项,但它有效。)

答案 1 :(得分:0)

你不能这样做,因为你有一个循环引用。创建一个新模块并在那里导入:

from B import b
from A import a