当前位置: 首页 > news >正文

麒麟aarch64架构离线部署python相关项目

核心步骤:
1、本地需搞虚拟机(可联网)。安装一个和生产架构一样的系统。如果本机是Intel的,需用arm的,需安装qemu,进行安装该镜像。
2、配置好python所需环境,在该服务器下载相关依赖的包。因python包中有小包,用项目命令生成相关依赖包。
3、整理好所有资料,上传到目标无网服务器进行安装。

一、本地需准备虚拟机和服务器(可联网)

我电脑Intel,目标服务器是麒麟aarch64的架构。
需安装qemu(安装很慢哦,自行安装),自行安装,可参考(实践可用):

链接1:
https://blog.csdn.net/weixin_44255842/article/details/120652227?spm=1001.2014.3001.5506

链接2:
https://blog.csdn.net/weixin_44255842/article/details/120652227?fromshare=blogdetail&sharetype=blogdetail&sharerId=120652227&sharerefer=PC&sharesource=eternal_tc&sharefrom=from_link

–安装命令
–进入qemu安装目录

D:\install\qemu

–安装虚拟机命令

qemu-system-aarch64.exe -m 8192 -cpu cortex-a72 -smp 8,sockets=4,cores=2 -M virt -bios E:\VM\kylin-server-V10\QEMU_EFI.fd -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file=E:\VM\kylin-server-V10\kylindisk.qcow2,id=hd0 -device virtio-blk-device,drive=hd0 -drive if=none,file=E:\jingxiang\Kylin-Server-V10-SP3-2403-Release-20240426-arm64.iso,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom  -net nic -net user,hostfwd=tcp::2222-:22

–启动命令

qemu-system-aarch64.exe -m 8192 -cpu cortex-a72 -smp 8,sockets=4,cores=2 -M virt -bios E:\VM\kylin-server-V10\QEMU_EFI.fd -device VGA -device nec-usb-xhci -device usb-mouse -device usb-kbd -drive if=none,file=E:\VM\kylin-server-V10\kylindisk.qcow2,id=hd0 -device virtio-blk-device,drive=hd0 -drive if=none,file=,id=cdrom,media=cdrom -device virtio-scsi-device -device scsi-cd,drive=cdrom -net nic -net user,hostfwd=tcp::2222-:22

进入安装的系统

ssh 127.0.0.1:2222

二、下载相关依赖包

附1:完全卸载包

# 完全卸载 NumPy
python3.10 -m pip uninstall -y numpy# 清理所有残留
sudo find /usr/local/python3.10 -name "*numpy*" -delete 2>/dev/null || true
sudo rm -rf /usr/local/python3.10/lib/python3.10/site-packages/numpy*# 清理缓存
python3.10 -m pip cache purge

附2:python 重新编译安装(SSL无解决办法)

SSL无解决办法(生产不用管,联网环境解决)可以升级pip 和 openssl# 进入 Python 源码目录
cd /usr/local/python3.10/Python-3.10.8# 清理之前的编译
make distclean# 重新配置,但禁用优化(--enable-optimizations 可能导致问题)
./configure \--with-lto \--prefix=/usr/local/python3.10 \--enable-shared \--with-openssl=/usr/local/openssl \--with-openssl-rpath=auto \LDFLAGS="-Wl,-rpath=/usr/local/python3.10/lib"make && make install

附3:核心—外网服务器下载相关依赖包

# 获取代码相关所有依赖包,生成requirements.txt
--导入包命令
pip freeze > requirements.txt# 指定其中之一
pip freeze | grep antlr4 > requirements.txt# 下载所有依赖的简单命令
pip download -r requirements.txt -d /tmp/packages#生产不能连接外网,需找一个可以连接外网相同的服务器架构,下载相关包
/yncz/ocr/noplat_packages 包下载路径# 下载完成命令说明
pip3 download \--only-binary=:all: \                    # 只下载二进制包--python-version=3.10 \                  # 指定Python版本-d /yncz/ocr/noplat_packages \           # 下载目录-r /yncz/ocr/ocr_code/requirements.txt \ # 依赖文件--ignore-installed \                     # 忽略已安装的包-i http://mirrors.aliyun.com/pypi/simple/ \ # 镜像源--trusted-host mirrors.aliyun.com        # 信任的主机# 下载单个(会根据平台自行去下载相关包,指定python版本)
pip3 download --only-binary=:all:  --python-version=3.10 -d /yncz/ocr/noplat_packages antlr4-python3-runtime -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
# 批量下载 (下载相关依赖包:requirements.txt)  不忽略子单安装
pip3 download --only-binary=:all:  --python-version=3.10 -d /yncz/ocr/noplat_packages -r /yncz/ocr/ocr_code/requirements.txt -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
# 可更换源 http://mirrors.aliyun.com/pypi/simple/
pip3 download --only-binary=:all:  --python-version=3.10 -d /yncz/ocr/noplat_packages -r /yncz/ocr/ocr_code/requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com# 批量下载的时候,失败,比如依赖于antlr4-python3-runtime。先单独安装这个,然后忽略下载已安装。
pip3 download --only-binary=:all:  --python-version=3.10 -d /yncz/ocr/noplat_packages -r /yncz/ocr/ocr_code/requirements.txt --ignore-installed -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.compython3.10 -m pip install -r /yncz/ocr/ocr_code/requirements.txt --ignore-installed# 指定平台,python版本(该命令在aarch64平台不使用,会找不到包。所以需用相同平台的可连外网的服务器去下载包)
pip3 download --only-binary=:all: --platform=aarch64 --python-version=3.10 -d /home/projcet/aarch64_packages -r requirements.txt -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com# 如出现启动包中找不到,可以卸载后重新安装
python3.10 -m pip uninstall Pillow

附4:查看所有的包和源码下载安装

查看相关包网页:
https://pypi.org/
可以下载源码编译安装,可以下载.whl进行安装。架构和python版本需兼容对应。

在这里插入图片描述

附5:相关云

# 使用清华源
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple MarkupSafe==3.0.2# 使用阿里云源
pip3 install -i https://mirrors.aliyun.com/pypi/simple/ MarkupSafe==3.0.2# 使用豆瓣源
pip3 install -i https://pypi.douban.com/simple/ MarkupSafe==3.0.2

三、进行离线安装

1、项目说明

pillow 为安装后,找不到包,重新找的包,该包不适配,用不了。
如果安装失败,卸载pillow后重新安装。

2、安装python-3.10.8

是否存在python3.10的版本。路径:usr/local/python3.10
下载路径:wget https://www.python.org/ftp/python/3.10.8/Python-3.10.8.tgz
本地见压缩包:
#解压
tar -xf Python-3.10.8.tar.xz

进入源码目录

cd Python-3.10.8 
#指定编译语言 
export LANG=zh_CN.UTF-8 
export LANGUAGE=zh_CN.UTF-8python常见安装教程(参考):
https://blog.csdn.net/ZMXdecode/article/details/138360452#指定安装目录 
enable-optimizations 不要,禁用优化(--enable-optimizations 可能导致问题)
./configure \--enable-optimizations \--with-lto \--prefix=/usr/local/python3.10 \--enable-shared \--with-openssl=/usr/local/openssl \--with-openssl-rpath=auto \LDFLAGS="-Wl,-rpath=/usr/local/python3.10/lib"#准备编译
./configure \--with-lto \--prefix=/usr/local/python3.10 \--enable-shared \--with-openssl=/usr/local/openssl \--with-openssl-rpath=auto \LDFLAGS="-Wl,-rpath=/usr/local/python3.10/lib"#编译安装make && make install

创建软件链

此处不能随便修改,之前的连接不能修改,特别是python的,会导致yum命令丢失。如果用不了,需重新创建一个软连接指向python(自带版本通常是2.7)

查看软连接:
# 示例1:查看 /usr/bin/python 软连接信息
Ls -al
ls -l /usr/bin
ls -l /usr/bin/python2
ls -l /usr/bin/pip3#先查看是否存在python3和pip3的软链接
#不存在创建(可全部搞成3.10)
ln -s /usr/local/python3.10/bin/python3.10  /usr/bin/python3.10
ln -s /usr/local/python3.10/bin/pip3.10  /usr/bin/pip3
查看是否安装成功
python3.10 -V
pip3 -V

3、上传相关代码和包

压缩包解压命令:
unzip package-name.zip代码和包放入路径
代码位于
/yncz/ocr/ocr_code包位于
/yncz/ocr/noplat_packagesantlr4-python3-runtime-4.9.3.tar.gz
该包需手动编译安装,路径位于:/yncz/ocr/ 下

4、创建python虚拟运行环境和离线包安装

# 创建虚拟环境
# 进入指定目录,创建
cd  /yncz/ocr 
# 创建虚拟环境
python -m venv ocrVenv
#激活虚拟环境
source ocrVenv/bin/activate后续会在命令行前面出现一个ocrVenv的名称,表示已经进入了虚拟环境5、安装相关依赖包
注:需进入虚拟环境再安装,把包安装到对应的虚拟环境中进行隔离安装相关依赖包
1、先安装antlr4-python3-runtime-4.9.3.tar.gz用源码安装:
#加压
tar -xzvf antlr4-python3-runtime-4.9.3.tar.gz
进入目录
python3.10 setup.py install2、其次安装其他相关.whl的包
cd /yncz/ocr/noplat_packages# 从本地目录安装命令说明
pip3 install \--no-index \                           # 不连接PyPI--find-links=/yncz/ocr/noplat_packages \ # 从本地目录查找-r /yncz/ocr/ocr_code/requirements.txt2.1 如果 whl 文件在当前目录
python3.10 -m pip install ./*.whl
# 离线安装(上面的失败,再用下面这个命令)
python3.10 -m pip install ./*.whl --no-index# 2.2 或者安装指定目录下的所有 whl 文件
python3.10 -m pip install /yncz/ocr/noplat_packages/*.whl3、查看安装的包
#查看所有包
python3.10 -m pip list
#查看某个包
python3.10 -m pip show markupsafe
python3.10 -c "import markupsafe; print('MarkupSafe 版本:', markupsafe.__version__)"

5、启动

#启动
[root@0002 ocr_code]# source /yncz/ocr/ocrVenv/bin/activate                                                                                             
(ocrVenv) [root@0002 ocr_code]# cd /yncz/ocr/ocr_code/    运行测试,看是否能够启动成功。(不能成功,根据报错解决,大概率是包依赖的问题)                                                                                              
(ocrVenv) [root@0002 ocr_code]# python3.10 testMain.py测试成功后,最终启动命令:
nohup python3.10 main.py > output.log 2>&1 &

6、字体安装

启动提示下载字体,根据报错放入指定目录,需手动放入 FZYTK.TTF
上传到 /yncz/ocr/ocrVenv/lib/python3.10/site-packages/rapidocr/models (对应的虚拟环境中)中文字体安装参考:
https://blog.csdn.net/Xcong_Zhu/article/details/145708377#查看安装的字体
fc-list :lang=zh 上传到
/usr/share/fonts/chinese-fonts
解压
/usr/share/fonts/chinese-fonts/Fonts
更新字体缓存
fc-cache
#查看安装的字体
fc-list :lang=zh

9、启动脚本

#!/bin/bash
# ocr_start.sh - OCR服务启动脚本# 脚本配置
APP_DIR="/yncz/ocr/ocr_code"
VENV_PATH="/yncz/ocr/ocrVenv/bin/activate"
MAIN_SCRIPT="ocrApp.py"
LOG_FILE="output.log"
PROCESS_NAME="ocrApp.py"# 获取进程PID
get_pid() {# 使用ps -ef查找特定进程,排除grep自身ps -ef | grep "$PROCESS_NAME" | grep -v grep | awk '{print $2}'
}# 启动服务
start() {echo "启动OCR服务..."# 检查是否已在运行PID=$(get_pid)if [ -n "$PID" ]; thenecho "OCR服务已在运行 (PID: $PID)"return 1fi# 切换到应用目录cd "$APP_DIR"# 激活虚拟环境并启动应用source "$VENV_PATH"nohup python3.10 "$MAIN_SCRIPT" > "$LOG_FILE" 2>&1 &# 等待一下然后获取PIDsleep 2PID=$(get_pid)if [ -n "$PID" ]; thenecho "OCR服务启动成功 (PID: $PID)"elseecho "OCR服务启动失败,请检查日志: $APP_DIR/$LOG_FILE"fi
}# 停止服务
stop() {echo "停止OCR服务..."PID=$(get_pid)if [ -n "$PID" ]; thenkill $PIDecho "OCR服务已停止 (PID: $PID)"elseecho "OCR服务未运行"fi
}# 重启服务
restart() {stopsleep 3start
}# 查看状态
status() {PID=$(get_pid)if [ -n "$PID" ]; thenecho "OCR服务正在运行 (PID: $PID)"# 显示进程详细信息ps -p $PID -o pid,user,pcpu,pmem,etime,cmdelseecho "OCR服务未运行"fi
}# 强制停止服务
force_stop() {echo "强制停止OCR服务..."PID=$(get_pid)if [ -n "$PID" ]; thenkill -9 $PIDecho "OCR服务已强制停止 (PID: $PID)"elseecho "OCR服务未运行"fi
}# 查看日志
logs() {if [ -f "$APP_DIR/$LOG_FILE" ]; thentail -f "$APP_DIR/$LOG_FILE"elseecho "日志文件不存在: $APP_DIR/$LOG_FILE"fi
}# 显示用法
usage() {echo "用法: $0 {start|stop|restart|status|force-stop|logs}"exit 1
}# 主逻辑
case "$1" instart)start;;stop)stop;;restart)restart;;status)status;;force-stop)force_stop;;logs)logs;;*)usage;;
esac
http://www.dtcms.com/a/602340.html

相关文章:

  • 网站实例网站头部导航样式
  • 本地缓存:多线程问题。volatile
  • 龙岗中心城有学网站建设晋城商城网站开发设计
  • 工业总线协议(Modbus RTU/TCP、PROFINET、EtherCAT)的帧结构、通信速率与实时性对比
  • 平谷青岛网站建设办公空间设计定位
  • 如何建设网站兴田德润可信赖自我介绍ppt配图
  • Oracle ADG 配置闪回导致报表查询延时!
  • 网站建设 好的公司吴江建设工程招标中心网站
  • 2025年安徽省科技创新战略与软科学研究专项重大项目申报条件要求流程
  • asp网站建设流程旅店网站建设规划书
  • uniapp 鸿蒙元服务 真机调试流程指南
  • 网站建设内存seo诊断工具网站
  • NeurIPS 2025 中科大等提出PIR:实例感知后处理修正框架,显著提升时序预测可靠性!
  • HaluMem:揭示当前AI记忆系统的系统性缺陷,系统失效率超50%
  • 异世界冒险:网络迷宫与生成树封印术
  • 怎样在网上做网站教程网站建设
  • JAVA后端面试笔记(三)
  • 【剑斩OFFER】算法的暴力美学——寻找峰值
  • 【DeepSeek实战】高质量提示词的六种类型
  • 从零开始学习PX4源码30(定高(ALTITUDE)模式)
  • 中国建设银行对公网站中国500强企业排名
  • 做网站的为什么不给域名和密码个人网页制作与网站建设
  • GIT基础使用教程
  • 想建设个人网站去那里建设宁德做网站的公司
  • wordpress网站seo专业展馆展厅设计
  • LangGraph智能知识库系统架构设计方案 - 多agent架构
  • 在线C语言编译 | 提供便捷高效的在线编程环境
  • 二级网站建设费用网站有备案号吗
  • 搭建Golang gRPC环境:protoc、protoc-gen-go 和 protoc-gen-go-grpc 工具安装教程
  • flutter项目老是卡在Running Gradle task ‘assembleRelease‘......