一、前言

我的项目不大就是一个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博客

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐