我正在更新一个通过私有(private) deb 存储库部署的 python 包,以使用命名空间名称。 (我已经更改了细节以使其通用)
旧名称是:
我已经改变了命名:
我为 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/