Python
项目打包是很多新手经常会问的问题,之前也有文章介绍过如何使用 pyinstaller
来打包生成可执行文件,只不过打包过程是基于命令行的。本文介绍的这个工具,auto-py-to-exe
,它是 pyinstaller
的 GUI
版本,对新手更加友好,点点鼠标就可以轻松搞定,那么,快开始吧。
使用 pip
直接安装
pip install auto-py-to-exe
或者拉取源码,解压后进入根目录,执行
python setup.py install
本文使用之前的 yolov5-pyqt5,https://github.com/zlszhonglongshen/yolov5-pyqt5项目进行打包,这里需要注意一点,如果你是使用的 python
虚拟环境,那必须在这个虚拟环境中去安装 auto-py-to-exe
项目代码拉下来之后,修改 main.py
,将
self.device = select_device(self.opt.device)
改为
# gpu self.device = torch.device('cuda:0') # 如果只有cpu的话,就改成 # self.device = torch.device('cpu')
为什么要这么改?这里主要是 select_device
方法中使用到了 subprocess
,而 pyinstaller
在打包 subprocess
方法时会报错,如果去修改 subprocess
部分的代码就有点麻烦了,为简单起见,就不去调用这个方法了,具体的可以参考 PyQt5系列教程(四)pyinstaller打包exe - 迷途小书童的Note迷途小书童的Note
然后,打开 auto-py-to-exe
, 脚本文件选择 yolov5-pyqt5
文件夹下的 main.py
,选择单文件,也就是最后就只生成一个可执行文件
在高级选项卡里,点击 --hidden-import
右侧的加号,然后填上 modles.yolo
,否则,生成的 exe
运行时会报如下的错误
Traceback (most recent call last): File "detect_image.py", line 405, inFile "detect_image.py", line 365, in main File "detect_image.py", line 293, in detection_alertarea File "detect_image.py", line 79, in __init__ File "models\experimental.py", line 137, in attempt_load File "torch\serialization.py", line 594, in load return _load(opened_zipfile, map_location, pickle_module, **pickle_load_args) File "torch\serialization.py", line 853, in _load result = unpickler.load() ModuleNotFoundError: No module named 'models.yolo' [12976] Failed to execute script detect_image
其它类似 No module named xxx
的错误,也是同样的解决方法
在我们做配置勾选的过程中,当前命令会显示对应的 pyinstaller
指令,如果你没有安装 auto-py-to-exe
,只安装了 pyinstaller
,那复制这行命令,同样也是可以打包成功的
如果没有报错,项目生成的 exe
文件会默认放在 C:\Users\用户名\output
下
准备好官方的模型文件 yolov5s.pt
,放在 weights
文件夹下,然后双击 exe
文件
最后,选择一张测试图片进行测试,功能正常
https://github.com/brentvollebregt/auto-py-to-exe
PyQt5系列教程(四)pyinstaller打包exe - 迷途小书童的Note迷途小书童的Note
GitHub - xugaoxiang/yolov5-pyqt5: 给yolov5加个gui界面,使用pyqt5,yolov5是5.0版本