繁体   English   中英

为什么这个循环导入在 Python 2 中失败,而在 Python 3 中没有?

[英]Why does this circular import fail in Python 2 but not in Python 3?

假设具有以下代码内联的包结构:

main.py

from a.b import c

a/__init__.py

a/b/__init__.py

a/b/c.py

from a.b import d

a/b/d.py

from a.b import c

python2 main.py给了我一个导入错误:

Traceback (most recent call last):
  File "main.py", line 1, in <module>
    from a.b import c
  File "/home/runner/a/b/c.py", line 1, in <module>
    from a.b import d
  File "/home/runner/a/b/d.py", line 1, in <module>
    from a.b import c
ImportError: cannot import name c

但是python3 main.py工作正常。 有谁知道发生了什么? 如何在 Python 2 中解决此问题? 我正在尝试将相对导入转换为绝对导入!

Python 2 Repl.It

Python 3 Repl.It

一个快速的解决方法是从格式中移动

from a.b import d

import a.b.d

在这里尝试,它似乎适用于 Python 2。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM