模块之间的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
分解为 A
和 B
都依赖的自己的模块。
使用import A
和import B
而不是from ...
变体——这将使导入成功,即使您要导入的名称在导入时尚未绑定。
在需要来自其他模块的符号的特定位置使用函数级导入。 (我不太喜欢这个选项,但它确实有效。)
【讨论】:
【参考方案2】:你不能这样做,因为你有一个循环引用。创建一个新模块并在那里导入:
from B import b
from A import a
【讨论】:
以上是关于模块之间的Python依赖关系[重复]的主要内容,如果未能解决你的问题,请参考以下文章