我想打包一个python程序,并以deb包的形式寄出。
出于某种原因(我知道有99%的做法是错误的做法),我希望将该程序在debian软件包中的python虚拟环境中发布。
我知道我可以使用dh-virtualenv
来做到这一点。这很好用-通常没有问题。
但是,当我要将其上传到 launchpad 时,就会出现问题。上载到启动板意味着上载源软件包。用dh-virtualenv
来说,源软件包是软件包描述,其中还没有创建virtualenv。
当我将其上传到启动板时,将不会生成该软件包,因为在启动板的构建过程中执行的dh-virtualenv
会尝试将python模块安装到virtualenv中,这意味着要安装这些模块无法通过PyPI进行操作,因为启动板不允许外部网络访问。
因此,基本上有两种可能的解决方案:
准备virtualenv并将其以某种方式合并到源代码包中,并使dh生成过程仅将已准备好的virtualenv“移动”到其最终位置。这可以与virtualenv --relocatable
一起使用。 但重定位会在所有python脚本的开头删除utf-8标记,从而使virtualenv中的所有python脚本都损坏了。
以某种方式 cache 源包中的所有必需python软件包,并且有dh_virtualenv
从缓存而不是从PyPI安装。
pip2pi
似乎可行,但是某些实验表明,尽管它们位于本地软件包索引中,但它不会安装软件包。
这两种方法似乎都比较笨拙并且容易出错。 你觉得这怎么样? 你有什么经验? 你会推荐什么?