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

YOLO+ONNX+PyQt打包为exe踩坑记录

今天,分享一个博主做的小软件,能够实现实时姿态估计、目标检测,并录制音视频,效果如下:
最开始时,博主利用pytorch+pyqt进行开发,使用pyinstaller进行打包,由于包含的依赖包过多,生成的exe文件达到了2.7G,因此,果断采用onnxruntime推理onnx模型的方案。

在这里插入图片描述

踩坑记录

1.在打包过程中,博主发现如果python3.10的版本在打包时会遇到onnxruntime打包失败等一系列问题,因此博主使用的python环境为3.8,详细环境依赖如下:

Package                   Version
------------------------- ---------
altgraph                  0.17.4
blinker                   1.8.2
certifi                   2025.6.15
charset-normalizer        3.4.2
click                     8.1.8
colorama                  0.4.6
coloredlogs               15.0.1
decorator                 4.4.2
Flask                     3.0.3
Flask-Cors                5.0.0
flatbuffers               25.2.10
humanfriendly             10.0
idna                      3.10
imageio                   2.35.1
imageio-ffmpeg            0.5.1
importlib_metadata        8.5.0
itsdangerous              2.2.0
Jinja2                    3.1.6
MarkupSafe                2.1.5
moviepy                   1.0.3
mpmath                    1.3.0
numpy                     1.24.4
onnxruntime               1.19.2
opencv-python             4.11.0.86
packaging                 25.0
pefile                    2023.2.7
pillow                    10.4.0
pip                       22.1.2
proglog                   0.1.12
protobuf                  5.29.5
PyAudio                   0.2.14
pydub                     0.25.1
pyinstaller               6.14.1
pyinstaller-hooks-contrib 2025.5
PyQt5                     5.15.11
PyQt5-Qt5                 5.15.2
PyQt5_sip                 12.15.0
pyreadline3               3.5.4
pywin32-ctypes            0.2.3
requests                  2.32.4
setuptools                70.3.0
some-package              0.1
sympy                     1.13.3
tqdm                      4.67.1
urllib3                   2.2.3
websocket-client          1.8.0
websockets                13.1
Werkzeug                  3.0.6
wheel                     0.45.1
zipp                      3.20.2

2.在将环境切换为3.8后,基本便能够打包成功,但在运行exe程序时,会报错:

缺少onnxruntime_providers_shared.dll依赖文件

在这里插入图片描述

此时,我们就需要在打包文件中添加了,找到我们打包时生成的spec文件,然后在data中添加进去所需要的依赖项(注意要根据自己的路径来配置),同时,还需要把我们的模型文件、图像文件也一并打包,如下:

# -*- mode: python ; coding: utf-8 -*-
a = Analysis(['main.py'],pathex=[],binaries=[],datas=[('D:\softwares\Anconda\envs\qianren\Lib\site-packages\onnxruntime\capi\onnxruntime_providers_shared.dll','onnxruntime\\capi'),('models/*.onnx','models'),('uploads','uploads'),('images','images')],hiddenimports=['onnxruntime'],hookspath=[],hooksconfig={},runtime_hooks=[],excludes=[],noarchive=False,optimize=0,
)
pyz = PYZ(a.pure)exe = EXE(pyz,a.scripts,[],exclude_binaries=True,name='main',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,console=True,disable_windowed_traceback=False,argv_emulation=False,target_arch=None,codesign_identity=None,entitlements_file=None,
)
coll = COLLECT(exe,a.binaries,a.datas,strip=False,upx=True,upx_exclude=[],name='main',
)

完成这些后,运行打包命令:

pyinstaller main.spec

此时,基本就能够打包成功了。
生成的exe文件就在dist文件夹中。

相关文章:

  • ASP.NET Core Web API 实现 JWT 身份验证
  • (LeetCode 面试经典 150 题 ) 55. 跳跃游戏 (贪心)
  • 人工智能中的集成学习:从原理到实战
  • 用 PyTorch 构建液态神经网络(LNN):下一代动态深度学习模型
  • 从Yocto中获取源码用传统的方式单独编译
  • 网络分层模型与协议体系技术研究报告
  • 【力扣 中等 C】467. 环绕字符串中唯一的子字符串
  • OBCP第三章 OceanBase SQL 引擎高级技术学习笔记
  • 【C++11】右值引用和移动语义
  • 云效代码仓库导入自建gitlab中
  • 多相机人脸扫描设备如何助力高效打造数字教育孪生体?
  • UE Universal Camera 相机插件-限制镜头在区域内移动
  • 【Unity智能模型系列】MediaPipeUnityPlugin 实现人脸数据获取
  • [按键手机安卓/IOS脚本插件开发] 按键插件调试与判断循环结构辅助工具
  • 【CMake基础入门教程】第七课:查找并使用第三方库(以 find_package() 为核心)
  • 数字孪生技术驱动UI前端变革:从静态展示到动态交互的飞跃
  • 面试150 判断子序列
  • Jenkins执行Jenkinsfile报错
  • 频宽是什么: 0.35/Tr、0.5/Tr?
  • Spring AI Alibaba