PyInstaller打包YOLOv8应用后运行出现torch警告求助
解决YOLOv8+PyInstaller打包EXE的运行警告与新会话问题
一、处理运行时警告
1. torchvision.io 加载警告
这个警告是因为打包后缺失torchvision的图像扩展库,但YOLOv8实际不依赖torchvision.io的功能,直接在代码开头添加警告过滤即可:
import warnings # 过滤指定警告 warnings.filterwarnings("ignore", category=UserWarning, message=r"Failed to load image Python extension.*")
2. torch.jit 重载源码警告
这是PyInstaller打包时丢失了Torch JIT重载函数的源码文件导致的,两种处理方式:
- 方式一:代码过滤警告
在代码开头添加:warnings.filterwarnings("ignore", category=UserWarning, message=r"Unable to retrieve source for @torch.jit._overload function.*") - 方式二:优化打包命令
修改PyInstaller命令,强制收集torchvision的全部文件:pyinstaller .\run.py -c -D --collect-all torchvision
二、解决点击按钮创建新会话的问题
每次点击按钮就生成新会话,本质是每次触发检测都重新初始化了YOLO模型。把模型初始化代码放到全局作用域,不要写在按钮的点击事件回调里:
# 全局初始化模型,只执行一次 from ultralytics import YOLO model = YOLO("yolov8n.pt") # 替换成你的模型路径 def on_detect_button_click(): # 这里直接用全局的model做检测 results = model(source="your_image/video_path") # 后续处理逻辑
三、打包时模块警告的通用处理
打包时出现的模块缺失警告,直接用--hidden-import补全缺失模块,或者用--collect-all收集整个ultralytics库(YOLOv8的核心依赖):
pyinstaller .\run.py -c -D --collect-all ultralytics --collect-all torchvision
内容的提问来源于stack exchange,提问作者QueueTi
相关产品推荐
相关产品推荐

