python - 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
,但某些实验表明,它不会安装包,尽管它们位于本地包索引中。
这两种方法似乎都有些笨拙且容易出错。你觉得这怎么样?你有什么经验?你会推荐什么?
解决方案
推荐阅读
- android - 是否可以在android中同时从两个后置摄像头获取信息?
- python - 将字符串从变量保存到 .txt 并检查变量是否与下一个循环中已使用的字符串匹配
- php - WooCommerce 数据库更新用户界面
- bash - 为资源提取 arn 时 bash 中的奇怪行为
- sql - 带年、月、日的两个日期之间的天数差异
- c - pub-sub 方案中的异常处理 (ZeroMQ)
- c - 使用Arduino产生金码调制的正弦波
- python - 为什么是 (-3//2 = -2)
- gcc - gcc 对 Amazon Linux 的 openmp 支持?
- event-listener - 如何在 Marko 中将事件侦听器作为动态属性传递?