如何使用 Python 命名空间包开发程序?


在 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 命名空间包。

更新于: 01-Oct-2019

177 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告