我正在寻找一种好方法来打包将要部署在 Debian 服务器上的 Python 应用程序。
应用程序本身依赖于一些未包含在基本 Debian 存储库中的模块,尽管将来可能会包含这些模块。这会产生一些问题...我依赖于这些模块的一些补丁。如果有一天安装了原始模块,应用程序就会崩溃。但是,如果我只为该virtualenv
应用程序安装了我需要的一切,我就无法升级 Python 本身(以防安全更新)。
第三个选项是重命名我的上游模块分支,并将其视为完全独立的模块。但这意味着要更改代码(工作量不大,但代码不再那么干净/通用)。
我还遗漏了其他选项吗?上述解决方案中是否存在我没有看到的优点/缺点?
答案1
尝试将自定义模块安装到其他位置(正常位置之外sys.path
),然后将新的安装位置添加到您的$PYTHONPATH。
这可以避免安装修补模块的上游版本时可能出现的问题,从而破坏您的系统。
答案2
虚拟环境仍将获得 Python 升级;标准库和解释器都是符号链接的。您确实需要担心虚拟环境中安装的 Python 模块的升级,包括发行版可能附带的模块。因此,我建议为自定义模块制作自己的软件包,并在原始模块获得安全更新时让应用程序中断。