我假设表格
的陈述 module1
,对象 在模块中,例如,如果variable1
包含import package1.module1.variable1
,我无法做到
module1
以下是感知到的不一致:假设variable1
和module1
具有相同的名称,例如,假设两者都称为__init__.py
。并且,package1
from .module1 import module1
我有
import package1.module1
然后做
module1
将导入对象 module1
,而不是模块 module1
。
如果subscribe
与对象和模块的名称相同,则仅有效。
答案 0 :(得分:0)
官方解释可在docs:
中找到import语句首先测试是否在包中定义了该项;如果没有,它假定它是一个模块并尝试加载它。如果找不到,则引发ImportError异常。
似乎import
似乎认为模块module1
中的对象module1
是一个模块,这就是为什么import package1.module1
可以工作但却产生了对象。< / p>
就解决方法而言,如果您尝试from _ import _ as x
,则会重命名该属性并绕过名称阴影。它应该产生您正在寻找的结果 - 模块module1
的路径导入(因为Python将看到类型<module>
)而不是变量module1
的对象导入。
以下是一些代码输出,以帮助更清楚地说明事情:
>>> import package1.module1
>>> print(package1.module1)
<module 'package1.module1' from 'package1/module1.pyc'>
>>> from package1.module1 import module1
>>> print(module1)
1
>>> from package1 import m
>>> print(m)
1
我在from module1 import module1 as m
的{{1}}中__init__.py
执行了package1
,并在module1
中将module1.py
变量设置为1。