Python模块之间的依赖关系

发布于 2025-01-06 19:51:14 字数 565 浏览 0 评论 0原文

可能的重复:
Python:循环(或循环)导入
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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冰葑 2025-01-13 19:51:14
  1. 将它们拆分为更多模块 - 例如,您可以将 a 分解为一个单独的模块,其中 AB > 依赖。

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

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

  1. Split them up into even more modules -- for example you can factor out a into a module of its own that both A and B depend on.

  2. Use import A and import B instead of the from ... 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.

  3. 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.)

一个人的旅程 2025-01-13 19:51:14

你不能这样做,因为你有一个循环引用。创建一个新模块并将两者导入其中:

from B import b
from A import a

You can't do that because you have a circular reference. Create a new module and import both there:

from B import b
from A import a
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文