libGL.so.1:无法打开共享对象文件:没有这样的文件或目录 - 即使使用 open cv headless

pyc*_*e81 4 python opencv docker aws-lambda

我正在构建一个在 AWS Lambda 上运行的 Docker 映像。

依赖项之一是 opencv,但我使用的是无头版本。

我的需求文件是:

absl-py==1.0.0
attrs==21.4.0
cycler==0.11.0
flatbuffers==2.0
fonttools==4.33.3
imageio==2.19.2
jmespath==1.0.0
kiwisolver==1.4.2
matplotlib==3.5.2
mediapipe==0.8.10
networkx==2.8.1
numpy==1.22.3
onnxruntime==1.11.1
opencv-contrib-python-headless==4.5.5.64
packaging==21.3
Pillow==9.1.1
protobuf==3.20.1
pyparsing==3.0.9
python-dateutil==2.8.2
PyWavelets==1.3.0
scikit-image==0.19.2
scipy==1.8.1
six==1.16.0
tifffile==2022.5.4
urllib3==1.26.9
Run Code Online (Sandbox Code Playgroud)

我的 Dockerfile 是:

FROM public.ecr.aws/lambda/python:3.8

COPY requirements.txt .
RUN pip install -r requirements.txt && rm requirements.txt

COPY lambda_function.py ./
COPY remove.py ./
COPY detect.py ./
COPY u2net.onnx ./
CMD [ "lambda_function.lambda_handler" ]
Run Code Online (Sandbox Code Playgroud)

我在 Lambda 中遇到的确切错误是:

{
  "errorMessage": "Unable to import module 'lambda_function': libGL.so.1: cannot open shared object file: No such file or directory",
  "errorType": "Runtime.ImportModuleError",
  "stackTrace": []
}
Run Code Online (Sandbox Code Playgroud)

我曾尝试研究可能发生的情况,但却空手而归。为什么在使用无头版本时会出现此错误?谢谢

Ben*_*rth 8

我需要更新我的容器存储库并安装依赖项libgl1-mesa-glx

RUN apt update
# Dependency for opencv-python (cv2). `import cv2` raises ImportError: libGL.so.1: cannot open shared object file: No such file or directory
# Solution from https://askubuntu.com/a/1015744
RUN apt install -y libgl1-mesa-glx
Run Code Online (Sandbox Code Playgroud)