16

我希望在接下来的几天内打包并上传我必须的库到 PyPI,但我有点不确定我对命名空间的方法。

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

  • 库 1 命名空间: abc.seo
  • 库 2 命名空间: abc.ajax
  • 库 3 命名空间: abc.ecommerce
  • ETC

问题是我不确定两个单独的包(例如eggs)是否可以与同一个父命名空间共存。这种方法有问题吗,还是有办法解决?最好的方法是什么?

这些库不应该打包在一起,它们太不相关了。我想在上传之前把它弄好,以避免在“官方”发布后痛苦的命名空间更改。

(NBabc不是真名,我希望我的问题没有广告)

更新

我选择了以下内容,以对没有安装 setuptools 的人友好:

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

使用以下内容setup.py

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

1 回答 1

16

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

/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']
    ...
)

参考文档:命名空间包

于 2011-02-21T11:24:11.407 回答