请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

import导入整个包的一个问题

在看课程7-9的时候,碰到一个问题

文件夹的结构和老师的一样,就是名字不一样而已

//img1.sycdn.imooc.com//szimg/5a4224ce0001512002340194.jpg

只能用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__=['模块名']来实现

1 回复 有任何疑惑可以回复我~
  • 提问者 leon787 #1
    好像是,所以我在__init__.py里面再import一下里面的模块,就可以直接import packet了
    回复 有任何疑惑可以回复我~ 2017-12-29 21:04:44
7七月 2017-12-28 00:51:56

建议看下 * 号的用法,试试用 *导入模块儿,而不是导入 包

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信