问题描述
versions/__init__.py
versions/v1_0.py
versions/v2_0.py
__init__.py
为空,但是每个v*.py
文件都定义了一些功能。然后,我尝试使用from versions import *
导入所有子模块,但是当我使用dir()
打印出所有已加载的模块时,它们未列出,并且我无法使用任何子模块功能,例如{{1} }
我是否错误地设置了v1_0.update()
模块?
这是一个最小的可复制示例:
下面是versions
和find
命令的结果,它们显示文件结构以及每个python文件的文件内容。
more
$ find .
.
./versions
./versions/__init__.py
./versions/__init__.pyc
./versions/v1_0.pyc
./versions/v1_0.py
使用此设置以及我在$ more versions/*.py
::::::::::::::
versions/__init__.py
::::::::::::::
::::::::::::::
versions/v1_0.py
::::::::::::::
def update():
pass
处的密码,我执行了以下操作:
.
解决方法
在python文档here中,我发现如果未定义__all__
,则from module import *
将仅初始化module
,然后导入在{{1}中显式定义的任何名称}。因此,在我的情况下,由于module
未明确定义versions/__init__.py
,因此不会导入。