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

标签 python namespaces debian packages deb

我正在更新一个通过私有(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/

    相关文章:

    python - 是否可以获得列表成员的指针?

    python - “PathCollection”不可迭代 - 创建可拖动的散点图

    linux - 如何从源代码安装 nginx; : Got SSL_OP_MSIE_SSLV2_RSA_PADDING error

    debian - 您如何使用 saltstack 添加包 repo 和 apt key ?

    python - 使用 python 计算径向角,顺时针/逆时针方向,给定像素坐标(然后反之亦然)

    python - Bokeh:在散点图上使用框选择后如何更新数据表?

    php - 根据当前命名空间动态使用不同的类

    python - URL 上的 Django NoReverseMatch

    ruby-on-rails - rspec - 使用命名空间时,rails 路由到错误的 Controller ,但只是有时

    java - Android SDK 更新失败,说-> http ://dl-ssl. google.com/android/repository/repository.xml 的 XML 验证失败