Python程序生产环境离线部署纪要

最近做了一个Python Django应用,到生产环境部署的工作,总结备忘。基本特征: 1. Linux环境的Python一般都还是2.7 2. 开发环境的Python总是越高越好,本例是3.7 3. 生产环境没有外网连接,没有yum源、pypi 安装Python 3.7: 需要libffi-devel 升级的openssl版本需要 编译安装时 ./configure —prefix=/usr/local/python3.7 —with-openssl=/opt/openssl1.0.1/ python 3.7 自带virtualenv(创建自己的venv,不要覆盖Linux的python默认环境) python -m venv <venv_dir> 开发测试环境的准备: pip freeze > requirements.txt 使用pip下载离线wheel pip download -d packages -r requirements.txt or pip wheel —wheel-dir=packages -r requirements.txt 完成这一步后,需要的python wheel就都保存在packages文件夹下了,但是有一个需要注意特别处理的问题,就是开发平台可能和部署平台不一致问题——有些下载的wheel文件是平台相关的,比如我的开发环境是mac,那这个文件名就带macos,这种情况下,需要手工下载生产环境对应平台文件——linux x86_64之类的。 pyzmq、SQLAlchemy都存在这个问题。将相关文件copy到生产环境,在之前准备的venv下: pip3 install —no-index —find-links=packages -r requirements.txt