如何使用 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 命名空间包。
广告