ImportError: libGL.so.1: 공유 객체 파일을 열 수 없습니다.해당 파일 또는 디렉터리가 없습니다.
cv2를 실행하려고 하는데 Import하려고 하면 다음 오류가 나타납니다.
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
온라인 권장 솔루션이 설치 중입니다.
apt install libgl1-mesa-glx
이미 설치되어 있고 최신 버전입니다.
NB: 실제로 Docker에서 실행 중인데 OpenCV 버전을 확인할 수 없습니다.저는 matplotlib를 수입해 보았지만, 그것은 정상적으로 수입되고 있습니다.
도커 파일에 다음 행을 추가합니다.
RUN apt-get update
RUN apt-get install ffmpeg libsm6 libxext6 -y
이러한 명령어는 보통 로컬머신에 존재하는 cv2 의존관계를 설치하지만 Docker 컨테이너에 존재하지 않아 문제가 발생할 수 있습니다.
위의 솔루션이 작동하더라도.하지만 패키지 사이즈가 꽤 커요. libGL.so.1
패키지로 제공되다libgl1
그래서 다음 코드로도 충분합니다.
apt-get update && apt-get install libgl1
제 생각에는 이것이 조금 더 나은 해결책입니다.패키지python3-opencv
에는 OpenCV의 모든 시스템 의존관계가 포함되어 있습니다.
RUN apt-get update && apt-get install -y python3-opencv
RUN pip install opencv-python
인스톨을 시도하다opencv-python-headless
대신 python 의존성opencv-python
이것은 외부 의존관계(numpy 이외)가 없는 사전 컴파일 바이너리 휠을 포함하고 있으며 Docker와 같은 헤드리스 환경을 대상으로 하고 있습니다.이것에 의해, 도커 이미지에서는, Docker 를 사용하는 것에 비해, 거의 700 mb 를 절약할 수 있었습니다.python3-opencv
Debian 패키지(모든 종속성 포함)
패키지 매뉴얼에서는 이것과 관련 (더 자세한 내용)에 대해 설명합니다.opencv-contrib-python-headless
pypi 패키지
의 재현 예ImportError
의문에 있어서
# docker run -it python:3.9-slim bash -c "pip -q install opencv-python; python -c 'import cv2'"
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/local/lib/python3.9/site-packages/cv2/__init__.py", line 5, in <module>
from .cv2 import *
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
# docker run -it python:3.9-slim bash -c "pip -q install opencv-python-headless; python -c 'import cv2'"
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
저에게 있어서 유일하게 효과가 있었던 WA는 다음과 같습니다.
# These are for libGL.so issues
# RUN apt-get update
# RUN apt install libgl1-mesa-glx
# RUN apt-get install -y python3-opencv
# RUN pip3 install opencv-python
RUN pip3 install opencv-python-headless==4.5.3.56
CentOS, RHEL, Fedora 또는 기타 Linux Distros를 사용하는 경우yum
다음과 같은 것이 있습니다.
sudo yum install mesa-libGL -y
이것을 에 넣습니다.Dockerfile
RUN apt-get update
RUN apt install -y libgl1-mesa-glx
행 앞
COPY requirements.txt requirements.txt
예를들면
......
RUN apt-get update
RUN apt install -y libgl1-mesa-glx
COPY requirements.txt requirements.txt
......
제 경우는, 다음의 조작으로 충분했습니다.그 때문에, 상기의 솔루션보다 공간도 절약됩니다.
RUN apt-get update && apt-get install -y --no-install-recommends \
libgl1 \
libglib2.0-0 \
GCP Appengine Flex 서버 환경에서 OpenCV를 사용하려고 할 때 동일한 오류가 발생했습니다.요건에서 "opencv-python"을 "opencv-python-headless"로 대체.txt는 문제를 해결했다.
OpenCV 매뉴얼에서는 데스크톱용 패키지와서버(헤드리스) 환경
모든 종류의 그래픽 라이브러리가 없는 비 GUI 서버에서 pip3 install opencv를 사용한 후 centos 8에서도 동일한 문제가 발생하였습니다.
dnf install opencv
필요한 의존관계를 모두 끌어옵니다.
라즈베리 파이에는, 이것을 넣어 주세요.
sudo apt-get install ffmpeg libsm6 libxext6 -y
필요한 솔루션은 다음과 같습니다.
pip install -U opencv-python
apt-get upgrade
apt update && apt install -y libsm6 libxext6 ffmpeg libfontconfig1 libxrender1 libgl1-mesa-glx
저에게는 프록시 설정과 관련된 문제였습니다.pypi는 nexus mirror를 사용하여 pypi를 실행했지만 opencv는 아무것도 작동하지 않았습니다.다른 네트워크에 접속할 때까지.
도커 컨테이너에서 cv2를 사용하다가 이 문제를 발견했습니다.수정 방법:
pip install opencv-contrib-python
opencv-module 대신 opencv-module-module을 설치합니다.
언급URL : https://stackoverflow.com/questions/55313610/importerror-libgl-so-1-cannot-open-shared-object-file-no-such-file-or-directo
'programing' 카테고리의 다른 글
데이터베이스에 색인을 추가하면 질의 결과 변경 (0) | 2022.09.21 |
---|---|
양식 제출을 중지하는 JavaScript 코드 (0) | 2022.09.21 |
mariadb 사용자에게 데이터베이스 생성 권한 부여 (0) | 2022.09.21 |
1052년:필드 목록 열에 'id'라고 애매한 것이다. (0) | 2022.09.21 |
MySQL에서 주별로 그룹화하는 방법 (0) | 2022.09.21 |