为什么此循环导入在Python 2中失败但在Python 3中没有失败?

问题描述 投票:1回答:1

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

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

python python-3.x python-2.x circular-dependency
1个回答
1
投票

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

from a.b import d

import a.b.d

我尝试过here,它似乎适用于Python 2。

© www.soinside.com 2019 - 2024. All rights reserved.