gpt4 book ai didi

python - 使用 python 的 debhelper 不部署命名空间包

转载 作者:行者123 更新时间:2023-12-04 17:06:39 26 4
gpt4 key购买 nike

我正在更新一个通过私有(private) deb 存储库部署的 python 包,以使用命名空间名称。 (我已经更改了细节以使其通用)

旧名称是:

  • 旧的 python 包名称:useful_thing
  • 旧的 Python 发行版名称:myproject_useful_thing
  • 旧的 debian 名称:python-myproject-useful-thing

  • 我已经改变了命名:
  • 新的 python 包名称:myorg.myproject.useful_thing
  • 新的 Python 发行版名称:myorg.myproject.useful_thing
  • 新的 debian 名称:python-myorg-myproject-useful-thing

  • 我为 myorg 和 myorg/myproject 制作了 pkgutil 风格的命名空间包,
    将包移动到该层次结构中。
    我的第一次尝试似乎成功了,但 deb 不再包含 python 文件。

    我缺少的命名空间包有什么特别之处吗?

    最佳答案

    在文件中 debian/规则 确保将 PYBUILD_NAME 设置为 deb 名称减去 python/python3

    PYBUILD_NAME=myorg.myproject.useful.thing
    首先,我将其设置为 myorg.myproject.useful_thing。这个想法很接近,但下划线是一个问题(debian 包名称中的下划线是非法的)。 Debian 政策建议也使用带虚线的 python 包名称作为 debian 包名称。 (与 pip 有点不同,它会将点换成破折号)
    https://www.debian.org/doc/packaging-manuals/python-policy/#module-package-names
    另外对于 python2.7,使用 pkgutil 风格的命名空间,如果你包含 初始化 .py 多个命名空间包(用 dh_python 打包)中的文件 初始化 .py 文件冲突,所以只有一个基本包包含命名空间目录是很重要的。
    在子包中,确保不包含命名空间包。
    例如:
    packages=['myorg.myproject.other_thing'],
    或者
    packages=find_packages(exclude=['myorg', 'myorg.myproject']),

    关于python - 使用 python 的 debhelper 不部署命名空间包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51068015/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com