打包常见的python名称空间

发布于 2021-01-29 15:08:04

我希望在接下来的几天中将必须打包的库打包并上载到PyPI,但是我不确定我对命名空间的使用方式。

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

  • 库1名称空间: abc.seo
  • 库2名称空间: abc.ajax
  • 库3名称空间: abc.ecommerce
  • 等等

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

这些库不应打包在一起,因为它们太不相关了。我想在上传之前正确处理它,以避免在进行“正式”发布后痛苦的命名空间更改。

(NBabc不是真实的名字,我希望我的问题不包含广告)

更新

我采取了以下措施,以使没有安装setuptools的人们感到高兴:

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

在以下内容中setup.py

setup(
    ...
    namespace_packages = ['rollyourown'],
    ...
关注者
0
被浏览
46
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

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

    参考文档:名称空间包



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看