打包自定义依赖关系的python软件

我正在寻找打包将要部署在Debian服务器上的Python应用程序的好方法。

应用程序本身依赖于一些未包含在基本Debian存储库中的模块,虽然它们可能在将来。 这造成了一些问题…我依赖于这些模块的一些补丁。 如果原始模块被安装一天,应用程序将中断。 但是,如果我只在该应用程序的virtualenv安装了所需的所有内容,那么我将无法升级Python本身(在安全更新的情况下)。

第三个选项是重命名我的fork上游模块,并把它当作一个完全独立的模块。 但是这意味着改变代码(没有太多的工作,但不会那么干净/普及)。

还有其他的select,我错过了吗? 在上面的解决scheme中没有看到任何优点/缺点吗?

尝试将自定义模块安装到其他位置(正常sys.path位置以外),然后将新安装位置添加到$ PYTHONPATH中 。

这可以避免如果已安装补丁模块的上游版本可能出现的问题,从而打破了您的系统。

virtualenv仍然会获得python升级; 标准库和解释器都是符号链接的。 你不必担心升级到virtualenv中安装的python模块,包括可能已经由发行版运送的模块。 所以我build议为自定义模块制作自己的包,如果原始模块得到安全更新,就让应用程序中断。