我该如何让功能直接从我的包中访问(而不是该包内的一个模块)?

24 浏览
0 Comments

我该如何让功能直接从我的包中访问(而不是该包内的一个模块)?

Python源代码目录中的 __init__.py 文件有什么作用?

admin 更改状态以发布 2023年5月23日
0
0 Comments

文件名为__init__.py的文件用于标记磁盘上的目录为Python包目录。
如果你有以下文件:

mydir/spam/__init__.py
mydir/spam/module.py

并且mydir在你的路径中,你可以这样导入module.py中的代码:

import spam.module

或者

from spam import module

如果你移除__init__.py文件,Python将不再在该目录中查找子模块,所以导入该模块的尝试将失败。

__init__.py文件通常是空的,但可以用于将包的选定部分以更方便的名称导出,保存便捷函数等。
根据上面的示例,可以这样访问init模块的内容:

import spam

基于这个

0
0 Comments

在早期的Python版本中(3.3之前),__init__.py是包("regular package")的必需部分,而在较新的Python 3.3+版本中则是"namespace package"。

这是文档

Python定义了两种类型的包,分别是传统的"regular packages"和"namespace packages"。"Regular packages"是指在Python 3.2及其以前版本中存在的传统包。"Regular packages"通常实现为包含一个__init__.py文件的目录。当导入一个"regular package"时,该__init__.py文件会被隐式执行,并将它定义的对象绑定到该包的命名空间中。该__init__.py文件可以包含与任何其他模块相同的Python代码,当它被导入时,Python会为该模块添加一些额外的属性。

但是只需点击链接,它包含一个示例、更多信息以及"namespace packages"的解释,这种包没有__init__.py

0