导入-包括子模块
作者:互联网
我有一个看起来像这样的目录结构:
scripts/
__init__.py
filepaths.py
Run.py
domains/
__init__.py
topspin.py
tiles.py
hanoi.py
grid.py
我想说:
from scripts import *
并获取filepaths.py中的内容,还获取hanoi.py中的内容
外部__init__.py包含:
__all__ = ['filepaths','Run','domains','hanoi']
我不知道如何使内部文件包含在该列表中.单独放置河内会出现此错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'hanoi'
将domains.hanoi放到此错误消息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'domains.hanoi'
我能想到的最后一个合理的猜测是放置scripts.domains.hanoi,它会得到以下错误消息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'scripts.domains.hanoi'
如何获得全部列表以包含子目录中的内容?
解决方法:
在scripts / __ init__.py中,在__all__之前添加以下内容
from domains import topspin, tiles, hanoi, grid
这会将这些模块添加到名称空间中,您将能够使用
from scripts import *
注意
作为肥皂盒,最好执行以下操作
from scripts import topspin, tiles, hanoi, grid, filepaths, Run
过度
from scripts import *
因为从现在开始的6个月后,您可能会在第400行代码中查看hanoi,想知道如果使用* import样式,它是从哪里来的.通过显式显示从脚本导入的内容,它可以提醒您事物的来源.我相信将来任何尝试阅读您的代码的人都会感谢您.
标签:python-import,python 来源: https://codeday.me/bug/20191123/2065737.html