请教一个生产环境 Python 多版本管理的问题

2021-09-11 03:14:19 +08:00
 haishenmao
目前场景是这样的:
服务需要部署在物理机上(不希望服务进容器,这个是客观限制没法变动)
物理机均为较旧版本的 Ubuntu Server (比如 14.04 、16.04 ,可以尝试用过 deadsnake 的 ppa 里的包,是可以正常部署的)
不能对原有的 python 环境产生破坏性,必须独立于原有的 python 环境( Ubuntu 系统工具中存在一些依赖自带 python2 、3 的工具,尝试过强制更新,会造成一些无法预料的问题)
pip 需要独立出来 (python3.4 、3.5 能用的 pip 版本的 setuptools 不兼容较新的包,使用 Pipenv 进行包管理)


项目使用的特性至少需要依赖于 python3.7 以上(需要用些 asyncio 的新功能),之前尝试在 14.04 3.4 的环境下使用 pipenv ( 16.04 可以正常用 pipenv ),均会有至少 python3.5 的版本要求限制,所以需要一套完全独立于系统的 python 和 pip 环境。

项目的开发环境都是使用 pipenv+pyenv 进行多版本、pip 隔离的,所以希望尽量可以在线上使用 pipenv 。

目前初步想法是编好一套完全独立于系统的 python 环境丢在专门的目录下,然后写一个独立的环境变量文件,启动使用 shell 脚本启动(这样内部运行时会携带进去专用指向的 python 环境参数),不知道这样是否可行?或者大家有什么更好的办法吗?
3572 次点击
所在节点    Python
23 条回复
julyclyde
2021-09-14 14:12:07 +08:00
@calmzhu 用 cat 主进程,那实际主进程如果故障了,容器都不会自动重启
calmzhu
2021-09-14 18:40:44 +08:00
@julyclyde
都说了只当虚拟环境管理工具用,自然不包括其他功能。监控等功能按普通进程一样就可以了。
UN2758
2021-09-29 17:43:00 +08:00
啊这,你们运维之前没接触过 conda 吗?建议弹叽叽

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/801160

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX