概述
打包利用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'