模块之间的Python依赖关系[重复]

Posted

技术标签:

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

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

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

from B import b

在模块 B 中我们有一行

from A import a

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

ImportError: 无法导入名称 a

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

【问题讨论】:

是的,你是对的。当我搜索以前回答的问题时,我错过了那个。谢谢 【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

from B import b
from A import a

【讨论】:

以上是关于模块之间的Python依赖关系[重复]的主要内容,如果未能解决你的问题,请参考以下文章

删除python字典之间的依赖关系[重复]

如何管理 Gradle 模块之间的依赖关系?

如何解决多模块项目中模块之间的依赖关系?

Terraform - 模块之间的依赖关系

多模块项目构建期间模块之间的 Maven 依赖关系解析

商店之间的循环模块依赖关系