Ubuntu AWS EC2实例中Yolov5调用Torch Hub报错求助
问题描述
我在Ubuntu系统的AWS EC2实例中按以下命令安装Torch和OpenCV:
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cpu pip install opencv-python
随后运行以下代码:
import torch # Model model = torch.hub.load('ultralytics/yolov5', 'yolov5s') # Image im = 'car.jpg' # Inference results = model(im) results.pandas().xyxy[0]
但出现如下错误:
Using cache found in /home/ubuntu/.cache/torch/hub/ultralytics_yolov5_master Traceback (most recent call last): File "/home/ubuntu/web/lib/objd/objd.py", line 4, in <module> model = torch.hub.load('ultralytics/yolov5', 'yolov5s') File "/home/ubuntu/web/myenv/lib/python3.10/site-packages/torch/hub.py", line 542, in load model = _load_local(repo_or_dir, model, *args, **kwargs) File "/home/ubuntu/web/myenv/lib/python3.10/site-packages/torch/hub.py", line 572, in _load_local model = entry(*args, **kwargs) File "/home/ubuntu/.cache/torch/hub/ultralytics_yolov5_master/hubconf.py", line 93, in yolov5s return _create('yolov5s', pretrained, channels, classes, autoshape, _verbose, device) File "/home/ubuntu/.cache/torch/hub/ultralytics_yolov5_master/hubconf.py", line 33, in _create from models.common import AutoShape, DetectMultiBackend File "/home/ubuntu/.cache/torch/hub/ultralytics_yolov5_master/models/common.py", line 18, in <module> import cv2 File "/home/ubuntu/web/myenv/lib/python3.10/site-packages/cv2/__init__.py", line 181, in <module> bootstrap() File "/home/ubuntu/web/myenv/lib/python3.10/site-packages/cv2/__init__.py", line 153, in bootstrap native_module = importlib.import_module("cv2") File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) ImportError: libGL.so.1: cannot open shared object file: No such file or directory
该代码在本地计算机可正常运行,请问如何解决这个错误?
解决方案
错误根源是AWS EC2的Ubuntu服务器实例默认未预装OpenCV依赖的系统级图形库,libGL.so.1属于OpenGL核心库,无法通过pip安装,需要通过系统包管理器补充:
- 更新系统包索引:
sudo apt update
- 安装缺失的依赖库:
sudo apt install -y libgl1-mesa-glx libglib2.0-0
安装完成后重新运行你的Python代码,即可正常导入OpenCV并加载YOLOv5模型。
本地计算机能正常运行是因为桌面版Ubuntu默认预装了这些图形相关的系统组件,而EC2服务器版为了轻量化省略了这类库。
内容的提问来源于stack exchange,提问作者Lintang Gilang Pratama
相关产品推荐
相关产品推荐

