我希望在接下来的几天内将我必须的库打包并上传到 PyPI,但我对我对命名空间的方法有点不确定。
我有几个其他方面不相关的项目采用了类似的方法,并希望为它们提供相同的命名空间。例如:
- 库 1 命名空间:
abc.seo
- 库 2 命名空间:
abc.ajax
- 库 3 命名空间:
abc.ecommerce
- 等等
问题是我不确定两个单独的包(例如 eggs)是否有可能与同一个父命名空间共存。这种方法有问题吗,还是有解决办法?什么是最好的方法?
库不应该打包在一起,它们太不相关了。我想在上传之前把它弄好,以避免在制作“官方”版本后痛苦的 namespace 更改。
(注意 abc
不是真实姓名,我希望我的问题没有广告)
更新
为了对没有安装 setuptools 的人友好,我采用了以下方法:
try:
__import__('pkg_resources').declare_namespace(__name__)
except ImportError:
__path__ = __import__('pkgutil').extend_path(__path__, __name__)
setup.py
中的以下内容:
setup(
...
namespace_packages = ['rollyourown'],
...
最佳答案
在每个项目基目录中,创建以下结构:
/setup.py
/abc/__init__.py
/abc/seo/
/abc/__init__.py
包含:
__import__('pkg_resources').declare_namespace(__name__)
setup.py
包含:
setup(...,
packages: ['abc', 'abc.seo'],
namespace_packages = ['abc']
...
)
引用文档:namespace packages .
关于python - 打包常见的 python 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5064951/