首页 > 解决方案 > Debian 构建包:将 python virtualenv 添加到 dpkg-buildpackage 以上传到启动板

问题描述

我想打包一个 python 程序并将它放在一个 deb 包中。

出于某些原因(我知道 99% 的做法是不好的做法),我想在 debian 包中的 python 虚拟环境中发布程序。

我知道我可以使用dh-virtualenv. 这很好用——通常没问题。但是当我想将它上传到launchpad时,问题就出现了。上传到启动板意味着上传源包。就dh-virtualenv源包而言,是包描述,其中尚未创建 virtualenv。

当我将它上传到启动板时会发生什么,该包将无法构建,因为dh-virtualenv在启动板上的构建过程中执行的包将尝试将 python 模块安装到 virtualenv 中,这意味着从 PyPI 安装这些模块,这将不起作用,因为启动板不允许外部网络访问。

所以基本上有两种可能的解决方案:

方法 A

准备 virtualenv 并以某种方式将其合并到源包中,并让 dh 构建过程简单地将这个准备好的 virtualenv“移动”到其最终位置。这可以与virtualenv --relocatable. 但是重定位会在所有 python 脚本的开头去除 utf-8 标记,从而使 virtualenv 中的所有 python 脚本都损坏。

方法 B

不知何故,将所有必要的 python 包缓存在源包中,并dh_virtualenv从缓存而不是从 PyPI 安装。这似乎是可行的pip2pi,但某些实验表明,它不会安装包,尽管它们位于本地包索引中。

这两种方法似乎都有些笨拙且容易出错。你觉得这怎么样?你有什么经验?你会推荐什么?

标签: pythonvirtualenvdpkg

解决方案


推荐阅读