可能重复:
Python 中的循环模块依赖项和相对导入
考虑以下python中循环导入的示例:
主要.py:
from pkg import foo
包/__init.py__:
# empty
包/foo.py:
from pkg import bar
包/bar.py:
from pkg import foo
运行 main.py 会导致异常:
Traceback (most recent call last):
File "/path/to/main.py", line 1, in <module>
from pkg import foo
File "/path/to/pkg/foo.py", line 1, in <module>
from pkg import bar
File "/path/to/pkg/bar.py", line 1, in <module>
from pkg import foo
ImportError: cannot import name foo
将 bar.py 更改为:
# from pkg import foo
import pkg.foo
将使示例工作。
为什么会这样?不应该 *import package.module" 和 "from package import module" 是等价的(除了后者中的额外名称绑定)?