打包常见的python命名空间

时间:2011-02-21 10:41:31

标签: python namespaces packaging pypi

我希望在接下来的几天打包并上传一个我有PyPI的库,但是我对我的命名空间方法有些不确定。

我有一些不相关的项目采用类似的方法,并希望给它们所有相同的命名空间。例如:

  • 图书馆1名称空间:abc.seo
  • 图书馆2名称空间:abc.ajax
  • 图书馆3名称空间:abc.ecommerce

问题是我不确定两个独立的包(例如鸡蛋)是否可能与同一个父命名空间共存。这种方法有问题,还是有办法绕过它?什么是最好的方法?

图书馆不应该打包在一起,它们太不相关了。我想在上传之前做到正确,以避免在进行“官方”发布后痛苦的命名空间更改。

(NB abc不是真名,我希望我的问题免于广告宣传)

更新

我选择以下内容,对没有安装setuptools的人们说得好:

try:
    __import__('pkg_resources').declare_namespace(__name__)
except ImportError:
    __path__ = __import__('pkgutil').extend_path(__path__, __name__)

setup.py中的以下内容:

setup(
    ...
    namespace_packages = ['rollyourown'],
    ...

1 个答案:

答案 0 :(得分:15)

在每个项目基目录中,创建以下结构:

/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

相关问题