ImportError: libGL.so.1: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません... Python インポート cv2 エラーを解決する

プロジェクトのシナリオと問題の説明

インターネットに接続されていないサーバー上の Docker コンテナーで Python プログラムを実行します (Python のバージョンはバージョン 3.8)。インストールされている opencv-python はこのバージョンです:
opencv_python-4.7.0.68-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
プログラム パーツ import cv2 にエラーがあります: ImportError: libGL.so.1: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません

詳細は次のとおりです。

>>> import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.8/dist-packages/cv2/__init__.py", line 181, in <module>
    bootstrap()
  File "/usr/local/lib/python3.8/dist-packages/cv2/__init__.py", line 153, in bootstrap
    native_module = importlib.import_module("cv2")
  File "/usr/lib/python3.8/importlib/__init__.py", line 127, 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

原因分析:

この理由は主に、Docker を使用してアプリケーションを構築するときに cv2 依存関係が欠如しているためです。このエラーは、必要な追加の依存関係をインストールすることで解決できます。


解決:

オプション 1:

をインストールするとopencv-python-headless、関連するすべての依存関係がインストールされ、このエラーが解決されます。opencv-python-headless には、外部依存関係 (numpy を除く) のないプリコンパイルされたバイナリ ホイールが含まれており、Docker のようなヘッドレス環境に適しています。私が使用しているバージョンを例に挙げると、
インストールされている opencv-python のバージョンは次のとおりです。
opencv_python-4.7.0.68-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
したがって、対応するバージョンの opencv-python-headless がインストールされ、
opencv_python_headless-4.7.0.68-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
エラーの問題は解決されました。このソリューションはオフライン環境により適しており、必要なのは対応するインストール パッケージのみです。

オプション II:

依存関係をインストールしますlibgl1
次のコマンドを使用します。

apt-get update && apt-get install libgl1

3番目の解決策:

cv2 の依存関係をインストールします。
この問題を解決するには、次のコードを DockerFile 行に追加するだけです。

RUN apt-get update
RUN apt-get install ffmpeg libsm6 libxext6  -y

パッケージが更新され、実行に必要な他のパッケージ cv2 がインストールされていることを確認します。

オプション 4:

インストールしますmesa-libGL.x86_64
yum インストール mesa-libGL.x86_64


参考:

インポートエラー: libgl.so.1: 共有オブジェクトファイルを開けません: そのようなファイルまたはディレクトリはありません
インポートエラー: libGL.so.1: 共有オブジェクトファイルを開けません

おすすめ

転載: blog.csdn.net/qq_39691492/article/details/130688233