我希望在接下来的几天中将必须打包的库打包并上载到PyPI,但是我不确定我对命名空间的使用方式。
我有一些其他的,不相关的项目,它们具有相似的方法,并希望为它们提供相同的名称空间。例如:
abc.seo
abc.ajax
abc.ecommerce
问题是我不确定两个单独的程序包(例如鸡蛋)是否可以与同一个父名称空间共存。这种方法有问题吗,还是可以解决?最好的方法是什么?
这些库不应打包在一起,因为它们太不相关了。我想在上传之前正确处理它,以避免在进行“正式”发布后痛苦的命名空间更改。
(NBabc不是真实的名字,我希望我的问题不包含广告)
abc
更新
我采取了以下措施,以使没有安装setuptools的人们感到高兴:
try: __import__('pkg_resources').declare_namespace(__name__) except ImportError: __path__ = __import__('pkgutil').extend_path(__path__, __name__)
在以下内容中setup.py:
setup.py
setup( ... namespace_packages = ['rollyourown'], ...
在每个项目基本目录中,创建以下结构:
/setup.py /abc/__init__.py /abc/seo/
/abc/__init__.py 包含:
/abc/__init__.py
__import__('pkg_resources').declare_namespace(__name__)
setup.py 包含:
setup(..., packages: ['abc', 'abc.seo'], namespace_packages = ['abc'] ... )
参考文档:名称空间包。