包的子模块中循环导入的不同行为

时间:2018-03-20 08:26:47

标签: python python-import python-module python-packaging

我正在编写一个Python包,我正在观察循环导入的不同行为,具体取决于我是否在包中的子模块中使用from x import yimport 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时没有错误。

0 个答案:

没有答案