python で YOLOv8 を動かそうとしたら以下のエラーが出ました。
from ultralytics import YOLO
Traceback (most recent call last):
File "/workspace/yolov8/test1.py", line 1, in <module>
from ultralytics import YOLO
File "/usr/local/lib/python3.11/site-packages/ultralytics/__init__.py", line 5, in <module>
from ultralytics.data.explorer.explorer import Explorer
File "/usr/local/lib/python3.11/site-packages/ultralytics/data/__init__.py", line 3, in <module>
from .base import BaseDataset
File "/usr/local/lib/python3.11/site-packages/ultralytics/data/base.py", line 12, in <module>
import cv2
File "/usr/local/lib/python3.11/site-packages/cv2/__init__.py", line 181, in <module>
bootstrap()
File "/usr/local/lib/python3.11/site-packages/cv2/__init__.py", line 153, in bootstrap
native_module = importlib.import_module("cv2")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/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 が GPU の OpenGL ライブラリを見つけられないことが原因で起きているエラーのようです。
YOLOv8 (ultralytics) をインストールすると依存関係にある OpenCV もインストールされるようですが、以下のページによれば、検出結果の可視化などを行ったりする場合のみ OpenCV が必要で、他のコア機能は OpenCV に依存しないとあります。
- https://github.com/ultralytics/ultralytics/issues/2179
- https://github.com/ultralytics/ultralytics/pull/3480
しかし、私の場合、検出結果の可視化とか何もしていない、というかそもそも最初の import 文のところでエラーになってしまっています。
尚、opencv-python
ではなく、opencv-python-headless
をインストールすれば解決できる場合もあるそうですが、私の場合、それでも上記のエラーが発生しました。
仕方がないので、OpenGL のライブラリをインストールして解決しました。
$ sudo apt update
$ sudo apt install -y libgl1-mesa-glx libglib2.0-0