首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python的debhelper不部署命名空间包

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

Stack Overflow用户
提问于 2018-06-27 16:59:46
回答 1查看 67关注 0票数 0

我正在更新一个python包,它是通过一个私有deb部署来使用命名空间名称的。(我已经更改了细节,使其成为通用的)

这些旧名字是:

  • 旧python包名称: useful_thing
  • 旧python发行版名称: myproject_useful_thing
  • 老debian名称:python-myproject-有用的东西

因此,我更改了命名:

  • 新的python包名称: myorg.myproject.useful_thing
  • 新的python发行版名称: myorg.myproject.useful_thing
  • 新debian名称:python myproject-有用-东西

我为myorg和myorg/myproject制作了pkgutil样式命名空间包,并将包移到了继承结构中。我的第一次尝试似乎成功了,但是deb不再包含python文件。

命名空间包有什么特别之处吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-27 21:20:04

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

代码语言:javascript
复制
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样式命名空间时,如果在多个名称空间包(与dh_python一起打包)中包含init.py文件,则init.py文件冲突,因此重要的是只有一个基本包包含名称空间目录。

在子包中,确保不包含命名空间包。例如:

代码语言:javascript
复制
packages=['myorg.myproject.other_thing'],

代码语言:javascript
复制
packages=find_packages(exclude=['myorg', 'myorg.myproject']),
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51068015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档