我创建了一个名为“custom_module”的文件夹,并且该文件夹内有 __init__.py,其中包含:
__all__ = [
'Submodule1',
'Submodule2'
]
从我读到的文档中我应该能够调用import custom_module
并访问该包,但这并没有发生。如何让 python 识别我的包?我正在使用 python 3.2
Update:该包不在 python 文件夹中。 python环境如何找到它,所以我可以成功地通过名称导入它。
有两个不同的概念让您感到困惑:packages and modules.
A module正如您所想的那样:一个包含类、变量等的 Python 脚本。您可以通过文件名导入它,然后可以访问其命名空间中的变量。
A package是分组在一个文件夹内的模块的集合。如果该文件夹包含一个名为__init__.py
,Python 将允许您导入整个文件夹,就好像它是一个模块一样。这将运行代码__init__
,但不一定会导入该文件夹中的所有模块。 (这是一个经过深思熟虑的设计选择:包通常非常大,导入所有模块可能需要很长时间。)
唯一出口的东西(如package.thing
) 默认情况下是里面定义的变量__init__
。如果你想submodule
可以作为package.submodule
,你需要将其导入到里面__init__
.
__all__
是一个相关的概念。简而言之,它定义了您执行操作时导入的内容from package import *
,因为 Python 不容易弄清楚它应该是什么。一般情况下你不需要它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)