如何使用 Python Namespaced Packages 开发程序?


在 Python 中,命名空间包允许你将 Python 代码分散在多个项目中。当你希望以独立下载的方式发布相关库时,它很有用。例如,当 PYTHONPATH 中有 Package-1 和 Package-2 目录时,

Package-1/namespace/__init__.py
Package-1/namespace/module1/__init__.py
Package-2/namespace/__init__.py
Package-2/namespace/module2/__init__.py
the end-user can import namespace.module1 and import namespace.module2.

在 Python 3.3 中,你无需做任何事,只要不要在你的命名空间包目录中放置任何 __init__.py 即可,它就可以正常运行。这是因为 Python 3.3 引入了隐式命名空间包。

On older versions, there's a standard module, called pkgutil, with which you can 'append' modules to a given namespace. You should put those two lines in both Package-1/namespace/__init__.py and Package-2/namespace/__init__.py:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)

这会将 sys.path 中以包命名的目录的所有子目录添加到该包的 __path__ 中。在此之后,你可以独立地分发 2 个包,并利用 Python 命名空间包。

更新日期: 2019 年 10 月 1 日

177 次浏览

开启你的职业生涯

完成课程后,获得认证

开始
广告