使用python的debhelper不会部署命名空间的程序包

时间:2018-06-27 16:59:47

标签: python namespaces debian packages deb

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

旧名称是:

  • 旧python软件包名称:有用的东西
  • 旧的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和 将程序包移到该层次结构中。 我的第一次尝试似乎奏效了,但是deb不再包含python文件。

我缺少的有关名称空间包的特别之处吗?

1 个答案:

答案 0 :(得分:0)

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

PYBUILD_NAME=myorg.myproject.useful.thing

首先,我将其设置为myorg.myproject.useful_thing。这个想法是关于结束的,但是下划线是个问题(debian软件包名称中的下划线是非法的)。建议使用点分的python软件包名称作为debian软件包名称来推荐Debian策略。 (与pip有点不同,pip会将点替换为破折号)

请参阅https://www.debian.org/doc/packaging-manuals/python-policy/module_packages.html#package_names

如果使用python2.7,则使用pkgutil样式命名空间,如果您将 __ init __。py 文件包含在多个命名空间包(与dh_python打包)中,则 __ init __。py 文件冲突,因此只有一个基本软件包包含命名空间目录很重要。

在子程序包中,确保不包括名称空间程序包。 例如:

packages=['myorg.myproject.other_thing'],

packages=find_packages(exclude=['myorg', 'myorg.myproject']),