报错
Traceback (most recent call last):
File "/root/autodl-tmp/mmsegmentation/tools/train.py", line 9, in <module>
from mmengine.runner import Runner
File "/root/miniconda3/envs/openmmlab/lib/python3.11/site-packages/mmengine/runner/__init__.py", line 2, in <module>
from ._flexible_runner import FlexibleRunner
File "/root/miniconda3/envs/openmmlab/lib/python3.11/site-packages/mmengine/runner/_flexible_runner.py", line 20, in <module>
from mmengine.hooks import Hook
File "/root/miniconda3/envs/openmmlab/lib/python3.11/site-packages/mmengine/hooks/__init__.py", line 9, in <module>
from .naive_visualization_hook import NaiveVisualizationHook
File "/root/miniconda3/envs/openmmlab/lib/python3.11/site-packages/mmengine/hooks/naive_visualization_hook.py", line 5, in <module>
import cv2
File "/root/miniconda3/envs/openmmlab/lib/python3.11/site-packages/cv2/__init__.py", line 181, in <module>
bootstrap()
File "/root/miniconda3/envs/openmmlab/lib/python3.11/site-packages/cv2/__init__.py", line 153, in bootstrap
native_module = importlib.import_module("cv2")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/miniconda3/envs/openmmlab/lib/python3.11/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
遇到的错误是因为 OpenCV(cv2)在导入时需要系统库 libGL.so.1,但当前容器中缺少这个库。这是 OpenCV 的常见依赖问题,可以通过安装相应的系统包来解决。
在终端中执行以下命令,安装缺失的系统库:
apt-get update
apt-get install -y libgl1-mesa-glx
如果后续还遇到其他库缺失(如 libgthread-2.0.so.0、libSM.so.6 等),可以一并安装常用依赖:
apt-get install -y libglib2.0-0 libsm6 libxext6 libxrender-dev libgomp1
原因说明
libGL.so.1 是 OpenGL 库的一部分,用于图形渲染。OpenCV 的一些模块(如图像显示、视频处理)依赖于它。
在轻量级容器(如 AutoDL 的基础镜像)中,这些图形库可能未被预装,需要手动安装。
由于你当前是 root 用户,可以直接使用 apt-get 安装。