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

发布于:2025-06-27 ⋅ 阅读:(15) ⋅ 点赞:(0)

今天,分享一个博主做的小软件,能够实现实时姿态估计、目标检测,并录制音视频,效果如下:
最开始时,博主利用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文件夹中。


网站公告

今日签到

点亮在社区的每一天
去签到