python 的 debhelper 不部署命名空间包
debhelper with python doesn't deploy namespaced packages
我正在更新一个 python 包,该包通过私有 deb 存储库部署以使用命名空间名称。 (我更改了细节以使其通用)
旧名字是:
- 旧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/rules 中确保将 PYBUILD_NAME 设置为 deb 名称减去 python/python3
PYBUILD_NAME=myorg.myproject.useful.thing
首先我将其设置为 myorg.myproject.useful_thing。这个想法很接近,但是下划线是个问题(debian 包名称中的下划线是非法的)。 Debian 政策建议也使用带点的 python 软件包名称作为 debian 软件包名称。 (与 pip 略有不同,pip 会将点换成破折号)
见https://www.debian.org/doc/packaging-manuals/python-policy/#module-package-names
此外,对于 python2.7,使用 pkgutil 样式命名空间,如果您在 more 中包含 init.py 文件比一个命名空间包(用 dh_python 打包) init.py 文件冲突,所以只有一个基础包包含命名空间目录。
在子包中,确保不包含命名空间包。
例如:
packages=['myorg.myproject.other_thing'],
或
packages=find_packages(exclude=['myorg', 'myorg.myproject']),
我正在更新一个 python 包,该包通过私有 deb 存储库部署以使用命名空间名称。 (我更改了细节以使其通用)
旧名字是:
- 旧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/rules 中确保将 PYBUILD_NAME 设置为 deb 名称减去 python/python3
PYBUILD_NAME=myorg.myproject.useful.thing
首先我将其设置为 myorg.myproject.useful_thing。这个想法很接近,但是下划线是个问题(debian 包名称中的下划线是非法的)。 Debian 政策建议也使用带点的 python 软件包名称作为 debian 软件包名称。 (与 pip 略有不同,pip 会将点换成破折号)
见https://www.debian.org/doc/packaging-manuals/python-policy/#module-package-names
此外,对于 python2.7,使用 pkgutil 样式命名空间,如果您在 more 中包含 init.py 文件比一个命名空间包(用 dh_python 打包) init.py 文件冲突,所以只有一个基础包包含命名空间目录。
在子包中,确保不包含命名空间包。 例如:
packages=['myorg.myproject.other_thing'],
或
packages=find_packages(exclude=['myorg', 'myorg.myproject']),