加载PyTorch YOLOv5模型时报WinError 32权限错误如何解决?
YOLOv5 torch.hub加载权限错误排查与解决
报错本质
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\Users\username/.cache\torch\hub\ultralytics_yolov5_master\requirements.txt'
该错误是因为force_reload=True参数会触发torch.hub强制覆写本地缓存的YOLOv5源码文件,但缓存目录下的文件被其他未退出的Python/Jupyter进程锁定,无法修改。
排查步骤
- 关闭所有已经打开的Jupyter notebook/lab窗口,尤其是之前运行过YOLOv5相关代码的窗口
- 打开Windows任务管理器,结束所有残留的
python.exe、pythonw.exe、jupyter-notebook.exe进程 - 手动访问缓存目录
C:\Users\你的用户名\.cache\torch\hub\,尝试删除ultralytics_yolov5_master文件夹:如果无法删除,说明确实有进程占用该目录下的文件,重启电脑即可解除占用
解决方案
- 优先移除
force_reload=True参数:该参数仅在需要更新YOLOv5远程源码时使用,无需每次加载自定义模型都添加,修改后的代码如下:
model = torch.hub.load('ultralytics/yolov5', 'custom', path='yolov5-master/yolov5-master/runs/train/weights/last.pt')
- 如果确实需要强制重载源码,先完成上述排查步骤删除缓存文件夹后,再运行带
force_reload=True的代码 - 避免触发缓存占用的替代方案:直接从本地YOLOv5源码导入模型加载,无需走torch.hub的缓存逻辑,代码示例:
import sys # 替换为你本地的yolov5源码根目录路径 sys.path.append('yolov5-master') from models.common import DetectMultiBackend model = DetectMultiBackend('yolov5-master/yolov5-master/runs/train/weights/last.pt')
- 所有方法都无效时直接重启电脑,清空所有进程占用后再运行代码即可
内容的提问来源于stack exchange,提问作者Omar Zayed
相关产品推荐
相关产品推荐

