import导入整个包的一个问题
来源:7-9 __init__.py 的用法
leon787
2017-12-26
在看课程7-9的时候,碰到一个问题
文件夹的结构和老师的一样,就是名字不一样而已
只能用from test.module1 import (a, b, c, d)这样的才会算导入成功,而
from test import *
print(module3.a)
和
import test
print(module1.a)
都会报错
报错内容
Traceback (most recent call last):
File "module5.py", line 2, in <module>
print(module1.a)
NameError: name 'module1' is not defined
如果改成
import test
print(test.module1.a)
报错就会变成
Traceback (most recent call last):
File "module5.py", line 2, in <module>
print(test.module1.a)
AttributeError: module 'test' has no attribute 'module1'
非常奇怪,我在test的__init__.py里面写了一句print('hello world')
这句话倒是会正常执行,不知道错在哪里,希望老师可以指点,谢谢。
2回答
-
这个问题我之前也发现了,通过尝试发现,发现如下可能的规则:import test 和 from test import *,只是导入包,都是只会执行init,不会导入包test里面的别的模块,如果需要导入具体的模块,那导入的表达式可以具体到具体模块名。或者在init文件里配置__all__=['模块名']来实现
112017-12-29 -
7七月
2017-12-28
建议看下 * 号的用法,试试用 *导入模块儿,而不是导入 包
00
相似问题