导入错误:使用OpenCV运行Docker容器时的libGL.so.1

a0zr77ik  于 2023-01-20  发布在  Docker
关注(0)|答案(2)|浏览(202)

我在运行我的Docker容器时收到以下错误:

W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such fi
le or directory
2021-07-01 18:39:36.985933: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
Traceback (most recent call last):
  File "/opt/program/analyze", line 4, in <module>
    from analysis.image_data_analyzer import ImageDataAnalyzer
  File "/opt/program/analysis/image_data_analyzer.py", line 1, in <module>
    from alibi_detect.utils.saving import save_detector, load_detector
  File "/usr/local/lib/python3.6/site-packages/alibi_detect/__init__.py", line 1, in <module>
    from . import ad, cd, models, od, utils
  File "/usr/local/lib/python3.6/site-packages/alibi_detect/od/__init__.py", line 10, in <module>
    from .llr import LLR
  File "/usr/local/lib/python3.6/site-packages/alibi_detect/od/llr.py", line 13, in <module>
    from alibi_detect.utils.perturbation import mutate_categorical
  File "/usr/local/lib/python3.6/site-packages/alibi_detect/utils/perturbation.py", line 1, in <module>
    import cv2
  File "/usr/local/lib64/python3.6/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

我尝试按照建议运行以下命令here

RUN apt-get update ##[edited]
RUN apt-get install ffmpeg libsm6 libxext6  -y

然而,我得到了错误/bin/sh: apt-get: command not found。我也尝试过用yum安装libGL,但也没有成功。这个容器的父映像是linux。有什么解决这个错误的想法吗?谢谢。

z2acfund

z2acfund1#

通过将此行添加到Dockerfile解决了问题:RUN yum -y install mesa-libGL

dba5bblo

dba5bblo2#

在我的例子中,我创建了一个带有flask的python服务器,它使用OpenCV的cv2来分析图像,我设法通过使用python:3.9-slim-buster docker图像解决了这个问题(即Python完整图像的精简版本,仅包含Python运行时所需的依赖项)并安装opencv-contrib-python包(你可以得到这个软件包的描述here)。我还设法安装了OpenCV所需的一些apt软件包,有libsm6libxext6ffmpeglibfontconfig1libxrender1libgl1-mesa-glx
我还测试了具有相同Dockerfile结构的python:3.8-slim-buster Docker映像,它工作得很好。

    • 停靠文件**
FROM python:3.9-slim-buster

WORKDIR /app

COPY . .
RUN apt update && apt install -y libsm6 libxext6 ffmpeg libfontconfig1 libxrender1 libgl1-mesa-glx
RUN pip install -r /app/requirements.txt

EXPOSE 8080

ENTRYPOINT [ "python3", "/app/main.py" ]
    • 要求. txt**
Flask
numpy
opencv-contrib-python
python-dotenv

以防万一,numpyFlaskpython-dotenv不是必须安装的,我在这里安装是因为我的python服务需要它。
我已经看到了一些关于它的问题,但没有一个明确的答案。有些方法对一些人有效,有些方法无效。
希望能有所帮助。

相关问题