不懂就问,关于 Python web 项目发布

2021-04-25 15:12:38 +08:00
 feitxue
目前刚接手了一个基于 tornado 的 python web 项目
之前一直搞 java 开发
要后续发版维护 小公司没有专职运维
问下各位大佬
python 有没有类似 java -jar 这种发布方式
直接本地打包 jar 上传到服务器然后直接运行
服务器只需要有 java 环境就行
大概搜了下资料看了下
要么上传到公共的 pypi,要么自建私有 pypi
我理解的是部署类似 maven 的仓库环境
感觉还是麻烦了点
ps:我们目前用 svn 管理代码
5073 次点击
所在节点    Python
42 条回复
xiqingongzi
2021-04-25 15:13:58 +08:00
docker 化
ipwx
2021-04-25 15:14:42 +08:00
只要有 python + pip,写好 requirements.txt 然后服务器上 pip install -r requirements.txt 安装好依赖就行。

其实后面还有一个重点,用比如 gunicorn 做多进程。
rationa1cuzz
2021-04-25 15:21:13 +08:00
没有,之前 linux 环境脚本,现在 windows 环境手动,同蹲一个解决方案
privil
2021-04-25 15:22:52 +08:00
不用,就是 git 直接拉代码 ,然后重启 python 就完了吗。
RockShake
2021-04-25 15:56:33 +08:00
Docker 或者 pipenv 吧
arischow
2021-04-25 15:59:08 +08:00
Docker & poetry

当然最好有个 CI/CD 让你持续自动构建 Docker 镜像,我用的 GitHub Actions
vZexc0m
2021-04-25 16:22:25 +08:00
janxin
2021-04-25 16:47:02 +08:00
Docker 吧,少烦心事
lucays
2021-04-25 16:51:29 +08:00
docker 呗看下 docker-compose 啥的
roundgis
2021-04-25 16:57:22 +08:00
Python 也有 executable egg 的方案

不過用的人不多

老老實實 docker 吧
SlipStupig
2021-04-25 17:00:17 +08:00
如果是小公司的话,docker 和 k8s 这些太重了,可以使用 SVN hook 触发构建,python 可以用 wheel 打包成 whl, 然后使用 ssh 执行 pip install package.whl, 然后重启一下 python 就好了
abersheeran
2021-04-25 17:07:56 +08:00
docker + docker-compose 完事。
feiandxs
2021-04-25 17:10:06 +08:00
@SlipStupig 我恰恰觉得是 docker 更省事…… 对小公司来说。 就是因为人少,我们才 docker 化, 不做复杂的编排,只是希望 git 推送后,jenkins 走一套流程,花几分钟打包好容器镜像自动跑上去部署。

因为人少才想尽可能自动。。。
starsky007
2021-04-25 17:16:26 +08:00
pip 可以把依赖安装到指定目录下,示例:
pip install -r requirements.txt -t target
然后依赖、程序一直打包。
robot1
2021-04-25 17:21:09 +08:00
pyinstaller 生产用过没问题
killva4624
2021-04-25 17:27:40 +08:00
docker 化+1,服务的启停可以用 docker-compose 解决,单机如果需要多副本甚至还可以上 swarm
qianc1990
2021-04-25 17:37:12 +08:00
起个脚本,直接拉代码就完了……
clf
2021-04-25 17:46:09 +08:00
docker 化+1
wunsch0106
2021-04-25 18:00:53 +08:00
1 、pyinstaller 打包,不过文件很大。
2 、docker 化
ClericPy
2021-04-25 21:01:49 +08:00
办法太多了...

1. docker 上面都提过了
2. pipenv 或者 poetry 做版本控制
2. 自己写个 makefile 整 venv
3. 使用 zipapp 把 Python 代码和依赖都打包到 .zip 文件里面, 有点接近 jar, 服务器上只要有个 Python 解释器就可以了. 目前用过的有 shiv (linkedin 出品), zipapps (我自己写的). 前者每次构建貌似都需要重新解压缩依赖, 遇到 .so / .pyd 依赖的库或者其他 C 编译的不能跨 Python 版本也不能跨平台; 后者是模仿前者做的, 主要解决的就是非必须情况不要解压缩, 也支持惰性安装来曲线解决跨平台跨版本问题.
4. pyinstaller 或者 Nuitka 或者 PyOxidizer 打包成编译好的, 不太推荐, 兼容性和性能都有问题

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

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

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

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

© 2021 V2EX