【问题标题】:Python dependency between modules [duplicate]模块之间的Python依赖关系[重复]
【发布时间】:2012-03-09 01:30:18
【问题描述】:

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

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

from B import b

在模块 B 中我们有一行

from A import a

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

ImportError: 无法导入名称 a

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

【问题讨论】:

  • 是的,你是对的。当我搜索以前回答的问题时,我错过了那个。谢谢

标签: python import python-2.7 python-module


【解决方案1】:
  1. 将它们拆分为更多模块 - 例如,您可以将 a 分解为 AB 都依赖的自己的模块。

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

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

【讨论】:

    【解决方案2】:

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

    from B import b
    from A import a
    

    【讨论】:

      猜你喜欢
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-14
      • 1970-01-01
      • 2015-12-28
      • 2016-09-24
      相关资源
      最近更新 更多