如何将含pycrypto依赖的Python脚本打包部署至Linux生产环境?
解决方案:将Python脚本与依赖打包部署到Linux环境
完全可以通过打包脚本和依赖的方式解决这个问题,以下是两种可行的实操方法:
方法1:手动下载并整理依赖文件
- 由于目标环境是Linux,需要下载对应Linux平台、适配Python3.6.8的pycrypto二进制包,在本地执行命令:
pip download pycrypto --platform manylinux1_x86_64 --python-version 36 --only-binary=:all: - 解压下载得到的wheel包(例如
pycrypto-2.6.1-cp36-none-manylinux1_x86_64.whl),取出里面的Crypto文件夹 - 将
publisher.py和Crypto文件夹一同复制到Linux生产环境的共享目录 - 为了让Python优先加载当前目录下的依赖,在
publisher.py开头添加以下代码:
这样开发者运行脚本时就会自动使用打包好的依赖,无需额外安装import sys import os sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
方法2:用PyInstaller打包成独立可执行文件
- 注意:PyInstaller打包的可执行文件和平台强绑定,不能在macOS打包后直接放到Linux使用,需要找一台装有Python3.6.8的Linux机器操作:
- 在该Linux机器上用用户权限临时安装PyInstaller:
pip install pyinstaller --user - 把
publisher.py复制到这台机器,执行打包命令:pyinstaller --onefile publisher.py - 打包完成后,
dist目录下会生成一个独立的Linux可执行文件,将这个文件复制到生产环境共享目录,开发者直接运行即可,完全不需要依赖系统的pycrypto
- 在该Linux机器上用用户权限临时安装PyInstaller:
关键注意点
- 手动整理依赖时,必须下载Linux平台的pycrypto包,macOS平台的二进制文件在Linux上无法正常运行
- 用PyInstaller打包时,务必在目标Linux环境操作,跨平台打包的产物无法兼容
内容的提问来源于stack exchange,提问作者Om Sao
相关产品推荐
相关产品推荐

