Python模块之间的依赖关系
我有一个 Python 包,其中包含两个相互导入的模块。也就是说,在模块 A 中我们有该行
from B import b
,在模块 B 中我们有该行当
from A import a
我尝试加载包含这些模块的包时,出现以下错误
导入错误:无法导入名称
有没有办法避免此错误(无需将两个模块合并为一个大模块 AB)?
Possible Duplicate:
Python: Circular (or cyclic) imports
Circular dependency in Python
I have a Python package featuring two modules that import each other. That is, in module A we have the line
from B import b
and in module B we have the line
from A import a
When I try to load the package containing these modules I get the following error
ImportError: cannot import name a
Is there a way to avoid this error (without combining the two modules into one big module AB)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
将它们拆分为更多模块 - 例如,您可以将
a
分解为一个单独的模块,其中A
和B
> 依赖。使用
import A
和import B
而不是from ...
变体 - 这将使导入成功,即使名称相同您要导入的内容在导入时尚未绑定。在需要来自其他模块的符号的特定位置使用函数级导入。 (我不太喜欢这个选项,但它确实有效。)
Split them up into even more modules -- for example you can factor out
a
into a module of its own that bothA
andB
depend on.Use
import A
andimport B
instead of thefrom ...
variants -- this will make the imports succeed even if the name you want to import has not yet been bound at the time of the import.Use function level imports at the specific places you need the symbols from the other module. (I don't like this option too much, but it works.)
你不能这样做,因为你有一个循环引用。创建一个新模块并将两者导入其中:
You can't do that because you have a circular reference. Create a new module and import both there: