如何使用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
最终用户可以导入 namespace.module1并导入namespace.module2。
在Python 3.3中,您不需要做任何事情,只需不在您的命名空间包目录中放置任何init.py文件,它就会正常工作。这是因为Python 3.3引入了隐式命名空间包。
在旧版本上,有一个名为pkgutil的标准模块,可以“附加”模块到给定的命名空间。您应该将以下两行放置在Package-1/namespace/__init__.py和Package-2/namespace/__init__.py文件中:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
这将为包的path添加所有在sys.path中命名为该包名称的目录的子目录。在此之后,您可以将这2个包分别分发并利用Python命名空间包。