关于Pyinstaller打包使用pytorh的pyqt5程序(yolov5检测界面为例)

概述

打包利用pyqt5设计的检测UI界面踩了很多坑,最后记录一下成功的这个版本,能运行成功了,但是还是特别大,有4.42G(有知道怎么减小的大佬麻烦评论区指教)

版本信息

python:3.9

torch:2.0.1+cu118

opencv-python:4.9.0.80

PyQt5:5.15.10

pandas:1.2.0 (注意最开始默认安装的pandas版本为2.4好像是,报错后指定为该低版本的)

1.创建一个全新的虚拟环境

只安装本程序需要的,保证成功运行即可(这里试过cpu版本的pytorch,实在是太慢了运行不成功,所以我安装的是GPU版本的)

2. 安装pyinstaller并打包

2.1 安装

pip install Pyinstaller

2.2 打包

关于pyinstaller很多参数,觉得很麻烦,我直接使用了一个 -D

pyinstaller -D detection.py

说明:如果需要打包的内容特别多会生成一个.spec文件,根据提示操作即可,本人创建全新的虚拟环境后没有遇到,直接打包完成了。

2.3 解决打包后的问题

(1)此时在dist文件夹下找到转换成功的可执行文件双击运行(或者复制文件路径到终端运行方便看到报错信息),此时我遇到报错大概是这样:

File "PyInstaller\loader\pyimod02_importers.py", line 419, in exec_module
File "pandas\core\generic.py", line 187, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 419, in exec_module
File "pandas\core\window\__init__.py", line 1, in <module>
File "PyInstaller\loader\pyimod02_importers.py", line 419, in exec_module
File "pandas\core\window\ewm.py", line 11, in <module>
ImportError: DLL load failed while importing aggregations: 找不到指定的模块。

能看出来“ImportError: DLL load failed while importing aggregations: 找不到指定的模块”是pandas出问题了,后面我尝试降低pandas版本,即:

pip install pandas==1.2.0

安装后重新打包一遍,接下来运行打包的程序成功且显示检测界面,接下来检测时再次报错

(2)选择模型后报错:(根据写的代码情况找错补漏)

FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'C:\\Users\\XXXX\\Desktop\\PDSdet\\dist\\detection\\_internal\\utils\\general.pyc'

我发现我的_internal下并没有utils(这是yolov5自带的文件夹),而且原本文件夹下的general.py打包后需要变成general.pyc,具体操作:

工作目录下新建一个.py或者终端操作:

import py_compile
py_compile.compile('path/to/general.py')

这时general.py文件所在目录下会生成一个__pycache__文件夹下,文件夹中就含有转换的general.pyc(默认生成的.pyc名字是含有py39的一串,自己手动改成general.pyc就好),然后把这个general.pyc复制到上述报错的位置使之存在这个位置就好啦!

'C:\\Users\\XXXX\\Desktop\\PDSdet\\dist\\detection\\_internal\\utils\\general.pyc'

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值