一、前言
我的项目不大就是一个main.py,由于上级要求需要部署到Linux中,第一次做linux部署python,很多都不懂,找了很多资料,也走了很多弯路,所以把整个部署过程记录下。
首先想要在linux部署python项目,可以两种方式, 第一:直接运行main.py,需要有Python环境 ; 第二:将main.py打包成单个可执行文件,直接可以放在没有安装python的Linux环境中
至于第二种 打包成单个可执行文件 必须是在 Linux下 安装Python 采用Pyinstaller进行打包,所以间接说哪种方式都是需要有python的环境的,看个人选择。
二、部署环境说明
Centos 7 Linux 环境 (自带python2.* 版本)
Python 3.9.9
Pyinstaller 3.6
Linux 以root用户 执行以下所有命令(不强制)
三、Python 3 安装
Linux系统自带 python2.*版本,但是,我们都是在python3下开发的,所以linux也必须安装Python3,会做linux并存两个版本的python
1.安装依赖环境
输入命令:yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
2.下载Python3
2.1 切换目录:
cd /opt
2.2 创建安装保存的目录:
mkdir -r install
2.3 下载python 两种方式(二选一):
1)通过命令:
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
2)通过windows环境tar包下载并上传到linux对应的位置,地址:Download Python | Python.org
下载 的文件名为:Python-3.7.1.tgz
3.安装Python3
安装在/usr/local/python3(具体安装位置看个人喜好)
3.1 创建目录:
mkdir -p /usr/local/python3
3.2 解压下载好的Python包:
tar -zxvf Python-3.7.1.tgz
3.3 切换到解压后的包下:
cd Python-3.9.9
3.4 安装gcc:
yum install gcc,确认下载输入 y
3.5 版本之后需要一个新的包libffi-devel:
yum install libffi-devel -y
3.6 生成编译脚本:
./configure --prefix=/usr/local/python3
/usr/local/python3是 3.1 步骤 创建的目录
3.7 编译:
make
3.8 安装:
make install
4.建立软连接
4.1 建立python软连接:
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
4.2 建立pip软连接:
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
5.加入PATH环境变量
5.1 进入文件进行编辑:
vi /etc/profile
5.2 编辑文件:按 i 进入编辑状态,输入以下信息:红色部分的地址是我们3.1创建的目录
# vim ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/usr/local/python3/bin
export PATH
编辑结束,按 esc 退出 编辑状态,然后 按 :wq 进行保存退出文件
5.3 使文件修改立马生效:
source ~/.bash_profile
6.检查安装是否成功
6.1 查看python 版本:
python3 --version
6.2 查看pip 版本:
pip3 --version
四、pyinstaller 安装
安装特定版本的pyinstaller
4.1. 安装pyinstaller:
pip3 install pyinstaller==3.6
五、打包部署运行
第一:直接运行main.py
环境都安装好了,先采用命令 python3+python文件 ,进行控制台运行代码,确保程序没有问题;
我的main.py程序目录是:/opt/install/main.py,所以我先切换到/opt/install/目录下,再执行程序:
cd /opt/install
python3 main.py
第二:将main.py打包成单个可执行文件
1.若是程序正常执行,则进行打包,执行以下命令:
pyinstaller -F main.py
若是报错:Pyinstaller ModuleNotFoundError:No module named ‘cmath’,则执行以下打包:
pyinstaller -F main.py --hidden-import cmath
-F 命令是将所有的依赖文件加程序main.py都打成一个可执行文件,最后只需要执行最后的程序,即可;
同时也可以 -D ,是将包依赖也会打出来,形成依赖+包的文件夹;
2.执行可执行文件
方法一:打好包后,会在main.py,所在的目录生成两个文件,dist和build,其中dist下的main,就是可执行文件,我们直接切换到dist下,执行./main,即可执行程序。此方法会将日志打印在控制台。
方法二:执行命令:
nohup python -u ./main.py > /log/getTittle.log 2>&1 & ,
会将日志信息打印在对应的日志文件下/log/getTittle.log;
四、遇到的问题以及解决
1.报错OSError: Python library not found: libpython3.8.so, libpython3.8m.so
解决:参考:(1条消息) 成功解决:OSError: Python library not found: libpython3.8.so, libpython3.8m.so_一勺菠萝丶的博客-CSDN博客