第一步,需要在服务器上配置Python3的环境

参考网址:https://blog.csdn.net/weixin_44897792/article/details/97803549

1. 查看本机版本以及类型

cat /etc/redhat-release

Last login: Fri Feb 25 18:14:03 2022 from localhost
[root@bogon ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

uname -a

[root@bogon ~]# uname -a
Linux bogon 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

2. 安装依赖包

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make

[root@bogon ~]# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.cn99.com
 * epel: mirrors.bfsu.edu.cn
 * extras: mirrors.cn99.com
 * updates: mirrors.cn99.com
软件包 zlib-devel-1.2.7-19.el7_9.x86_64 已安装并且是最新版本
软件包 bzip2-devel-1.0.6-13.el7.x86_64 已安装并且是最新版本
软件包 1:openssl-devel-1.0.2k-24.el7_9.x86_64 已安装并且是最新版本
软件包 ncurses-devel-5.9-14.20130511.el7_4.x86_64 已安装并且是最新版本
软件包 sqlite-devel-3.7.17-8.el7_7.1.x86_64 已安装并且是最新版本
软件包 readline-devel-6.2-11.el7.x86_64 已安装并且是最新版本
软件包 1:tk-devel-8.5.13-6.el7.x86_64 已安装并且是最新版本
软件包 gcc-4.8.5-44.el7.x86_64 已安装并且是最新版本
软件包 1:make-3.82-24.el7.x86_64 已安装并且是最新版本
无须任何处理

3.下载Python源码包

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz

或者可以去官网下载然后上传到服务器上。

[root@bogon ~]# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.cn99.com
 * epel: mirrors.bfsu.edu.cn
 * extras: mirrors.cn99.com
 * updates: mirrors.cn99.com
软件包 zlib-devel-1.2.7-19.el7_9.x86_64 已安装并且是最新版本
软件包 bzip2-devel-1.0.6-13.el7.x86_64 已安装并且是最新版本
软件包 1:openssl-devel-1.0.2k-24.el7_9.x86_64 已安装并且是最新版本
软件包 ncurses-devel-5.9-14.20130511.el7_4.x86_64 已安装并且是最新版本
软件包 sqlite-devel-3.7.17-8.el7_7.1.x86_64 已安装并且是最新版本
软件包 readline-devel-6.2-11.el7.x86_64 已安装并且是最新版本
软件包 1:tk-devel-8.5.13-6.el7.x86_64 已安装并且是最新版本
软件包 gcc-4.8.5-44.el7.x86_64 已安装并且是最新版本
软件包 1:make-3.82-24.el7.x86_64 已安装并且是最新版本
无须任何处理
[root@bogon ~]# wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
--2022-02-25 18:34:34--  https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
正在解析主机 www.python.org (www.python.org)... 151.101.108.223, 2a04:4e42:11::223
正在连接 www.python.org (www.python.org)|151.101.108.223|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:22745726 (22M) [application/octet-stream]
正在保存至: “Python-3.7.0.tgz”

100%[======================>] 22,745,726  44.9KB/s 用时 8m 39s 

2022-02-25 18:43:14 (42.8 KB/s) - 已保存 “Python-3.7.0.tgz” [22745726/22745726])

4.解压Python安装包

tar -zxvf Python-3.7.0.tgz

5. 进入解压后的目录

cd Python-3.7.0

./configure

make&&make install

注意:如果运行make&&make install 失败,需要先运行一下如下的命令:

yum install libffi-devel -y

然后再次运行 make&&make install 命令。

6. 添加软连接,让我们可以利用python指令默认使用该版本的Python环境,把之前的python改成python.bak

默认情况下,python3.7安装在/usr/local/bin/。

mv /usr/bin/python /usr/bin/python.bak

ln -s /usr/local/bin/python3 /usr/bin/python

ln即为link的缩写。

默认pip也需要修改,可通过find / -name 'pip3’找到pip3的位置,同样加一条软链到bin里面:

[root@bogon Python-3.7.0]# find / -name 'pip3'
/usr/local/bin/pip3
/www/server/panel/pyenv/bin/pip3
/www/server/python_manager/versions/3.9.7/bin/pip3
/python_xiangmu/ddddocr_shibie/ad5e39eed57d12fe36a51d7adc0a6e1a_venv/bin/pip3

将原本的pip变成pip.bak,将该版本的pip3变成默认的pip。

mv /usr/bin/pip /usr/bin/pip.bak

ln -s /usr/local/bin/pip3 /usr/bin/pip

7. 配置yum

yum是依赖python2.7的,把python改成3.7自然就不好使了。但是不用担心,python2.7还在你的系统里。只要修改一下yum里的相关依赖即可。

vi /usr/libexec/urlgrabber-ext-down

找到一个/usr/bin/python的,后面加上2.7就可以,也就是/usr/bin/python2.7,然后wq保存。
在这里插入图片描述

8. 测试环境是否安装成功

在这里插入图片描述
在这里插入图片描述
如上图所示,环境就安装成功了。

第二步,部署Python项目

1. 在文件根目录下创建一个专门存放Python项目的文件夹

在这里插入图片描述

2. 将本地项目上传到服务器中

在这里插入图片描述

3. 项目内容如下:

在这里插入图片描述
项目代码:ddddocr_shibie.py

# -*-coding=utf-8
import random
import ddddocr   # pip install ddddocr -i https://pypi.tuna.tsinghua.edu.cn/simple
import base64
import os
from flask import Flask, jsonify, render_template, request  # pip install flask
import json


# 思路:将图片的base64编码保存在code.txt文本中,再利用程序读取该文本,将其转换为图片 b64_to_img,转换为图片后,利用ddddocr模块识别图片上的内容,然后打印图片的内容,再然后删除图片。
# 图片的名称随机(0-99随机)
# 读取下一张图片时,将下一张图片的base64编码写入base64_code.txt
app = Flask(__name__)  # 实例化app对象
testInfo = {}


# 生成随机图片名称:   仅供base64_to_img()方法调用才有用
def create_img_name():
    # 1 生成随机图片名的随机数字部分:    # 1~99
    num = random.randint(1, 100000)
    # 2 拼接成完整的图片名:    # img01~img99
    if num // 10 == 0:  # 仅个位数则添0补成两位
        img_name = "img0" + str(num) + ".jpg"
    if num // 10 > 0:  # 有两位数则直接拼接
        img_name = "img" + str(num) + ".jpg"
    return img_name


# base64编码转换成img图片文件
def base64_to_img(b64_code):
    # 2. base64转换成图片数据:
    img_data = base64.b64decode(b64_code)
    # 3. 生成图片名称:
    img_name = create_img_name()    # 生成的图片名称就保存在img_name变量中
    # 3.3 图片数据写入文件:
    with open(img_name, "wb") as f:
        f.write(img_data)
    return img_name      # 返回


# 传入的参数是图片的base64转码,输出并返回图片中的内容
def print_content(base64_filename):
    #  1. 从文件中读取出base64编码字符串
    with open(base64_filename, mode="r", encoding="utf-8") as f:
        b64_code_ = f.read()           # str
    b64_code = b64_code_.replace("data:image/jpeg;base64,", "")   # 去掉编码方式说明前缀,否则无法转码出来的文件是错误的
    # 2. 转化成图片
    img_name = base64_to_img(b64_code)
    # 3. 下面开始读取
    ocr = ddddocr.DdddOcr()
    with open(img_name, mode='rb') as f:
        img_bytes = f.read()
    res = ocr.classification(img_bytes)
    print("识别结果:", res)   # 在控制台打印识别结果
    os.remove(img_name)
    return res


@app.route('/test_post', methods=['GET', 'POST'])  # 路由
def get_result():
    result = print_content("base64_code.txt")
    testInfo['result'] = result
    return json.dumps(testInfo)

# 两种方案:只删除图片,那样每次识别新的就需要更新base64_code文件;删除图片同时也删除base64_code.txt文件,那样下次识别就要重新上传该文件


if __name__ == "__main__":
    app.run(host='0.0.0.0',
              port=7777,
              debug=True
              )

在此处的终端运行一下程序可以得出结果:
在这里插入图片描述
访问网址即可得到:
在这里插入图片描述

4. 选择软件商店中的Python项目管理器,添加Python项目

在这里插入图片描述
在这里插入图片描述
点击确定。
在这里插入图片描述
等待安装项目所需依赖。

5. 项目添加完成

在这里插入图片描述
随时可以暂停该项目,让其停止运行。
在这里插入图片描述

6. 启动项目直接打开网址就能得到结果:

在这里插入图片描述
在这里插入图片描述
以上就是在宝塔面板上搭建Python3环境和部署Python3版本的项目的整个流程了。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐