我有
Python包只叫“包”.在其中我有空__init__.py和两个模块.一个叫做m1.py,只包含一行:
x = 3
另一个名为m2.py并包含以下行:
x = 5
现在我尝试使用那些模块.首先我做这样的事情:
from package.m1 import x
print package.m1.x
当然它不起作用 – 我得到这样的错误:
NameError: name 'package' is not defined
我明白为什么它不起作用.但后来我做了类似的事情:
from package.m1 import x
import package.m2
print package.m1.x
现在它确实有效.为什么?怎么样?我没有导入package.m1!
最佳答案 我只有一个解释:
> from package.m1 import x加载模块包和package.m1. m1被添加到包模块中,但包不会添加到您的全局变量中.
> import package.m2现在将包模块添加到您的全局变量中.由于m1已经是软件包的一部分,因此现在可以通过package.m1访问它.
进一步测试:
>>> from package import m1
>>> package.m1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'package' is not defined
>>> import package.m2
>>> package.m1
<module 'package.m1' from 'package/m1.py'>
>>> from package import m3
>>> package.m3
<module 'package.m3' from 'package/m3.py'>
测试继续:
>>> import package.m1
>>> del package
>>> import package
>>> package.m1
<module 'package.m1' from 'package/m1.py'>