部署YOLOv5到Streamlit遇ultralytics模块缺失错误求解决方案
解决Streamlit部署YOLOv5时的ModuleNotFoundError问题
核心原因
本地运行时,torch.hub.load会自动下载并缓存YOLOv5仓库到本地目录,但Streamlit的部署环境是全新的,没有本地缓存,且默认不会自动安装ultralytics依赖,导致加载模型时找不到模块。
具体解决方法
1. 显式安装ultralytics依赖
在项目根目录创建requirements.txt文件,添加以下内容:
ultralytics>=8.0.0 torch>=2.0.0 torchvision>=0.15.0
Streamlit部署时会自动读取这个文件安装所需依赖,确保ultralytics模块能被正常调用。
2. 修改模型加载方式,摆脱本地缓存依赖
不要依赖本地缓存的模型文件,改用两种更可靠的加载方式:
- 方式一:直接通过ultralytics导入YOLO类加载
将自定义训练的.pt模型文件放到项目目录下,用以下代码加载:from ultralytics import YOLO # 加载本地自定义模型 model = YOLO("your_custom_model.pt") - 方式二:指定仓库地址并强制重新加载
如果坚持使用torch.hub.load,需要指定完整仓库地址,并设置force_reload=True让部署环境重新下载仓库资源:model = torch.hub.load('ultralytics/yolov5', 'custom', path='your_custom_model.pt', force_reload=True)
3. 确认自定义模型文件被正确上传
将你的自定义.pt模型文件放到项目根目录,部署时确保该文件被包含在上传的代码包中,不要依赖本地缓存的模型文件。
4. 提前检查部署环境依赖
可以在Streamlit代码开头添加依赖检查代码,方便排查问题:
import ultralytics import torch print(f"Ultralytics版本: {ultralytics.__version__}") print(f"Torch版本: {torch.__version__}")
部署后查看日志,确认依赖是否正确安装。
内容的提问来源于stack exchange,提问作者afrologicinsect
相关产品推荐
相关产品推荐

