我正在编写一个Python包,我正在观察循环导入的不同行为,具体取决于我是否在包中的子模块中使用from x import y
或import x.y
。
要明确,我不想知道如何避免循环导入,我只想了解行为。
我的包具有以下结构:(__init__.py
为空)
package/__init__.py
package/module1.py
package/module2.py
如果我使用下面的from x import y
表单,那么当我尝试ImportError
时,我会收到import package.module1
。
# module1.py
from package import module2
# module2.py
from package import module1
但是,如果我使用import x.y
表单,那么我可以import package.module1
没有任何问题。发生了什么事?
# module1.py
import package.module2
# module2.py
import package.module1
我在Python 2.7.5和3.4.3中观察到了这种行为。
修改:版本3.5.2和3.6.4使用from x import y
时没有错误。