前言
当需要为一个离线环境部署python应用时,离线环境可能缺少各种python环境,有docker的话可以用docker,没有docker可以用pyinstaller
打包成二进制文件。pyinstaller
会打包当前所有用pip安装的包,所以建议在虚拟环境中打包python应用。
- 系统版本:centos 7
- python版本:3.6
步骤
- 安装
virtualenv
pip3 install virtualenv
- 创建虚拟环境
virtualenv myvenv
- 激活虚拟环境
cd myvenv source ./bin/activate
- 下载依赖(在虚拟环境使用
pip
时会引用宿主机的pip.conf
文件,因此建议宿主机先设置好国内pip源,加快下载)
pip3 install pandas pyinstaller pymysql
- 编辑python文件:test.py
- 打包test.py。可以通过
pip3 show pandas
获取site-packages
的路径。打包后的二进制程序在当前目录的dist
目录下。
pyinstaller -F -p /home/myvenv/lib64/python3.6/site-packages test.py
- 退出虚拟环境
deactivate
其它
- 需要管理多个虚拟环境时,推荐使用
virtualenvwrapper
- 如果需要删除
virtualenv
创建的虚拟环境,直接删除目录即可。