我试图运行cv2,但当我试图导入它时,我得到以下错误:

ImportError: libGL.so.1: cannot open shared object file: No such file or directory

建议的在线解决方案是安装

apt install libgl1-mesa-glx

但这是已经安装的最新版本。

注:我实际上是在Docker上运行这个,我无法检查OpenCV版本。我尝试导入matplotlib,导入正常。


当前回答

对我来说,唯一有效的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

其他回答

即使上面的解决方案是有效的。但是它们的包装尺寸相当大。 libGL.so。1由包libgl1提供。所以下面的代码就足够了。

apt-get update && apt-get install libgl1

在缺少各种图形库的非GUI服务器上使用pip3安装opencv后,在centos 8上出现了同样的问题。

DNF安装opencv

拉入所有需要的依赖项。

在我的情况下,做以下就足够了,与上面的解决方案相比,这也节省了空间

RUN apt-get update && apt-get install -y --no-install-recommends \
        libgl1 \
        libglib2.0-0 \

如果使用docker或服务器环境,请使用opencv-python-headless。

在Dockerfile中添加以下代码行:

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

这些命令安装了cv2依赖项,这些依赖项通常存在于本地机器上,但可能在Docker容器中缺失而导致问题。

[2022年1月20日的小更新:Docker建议,永远不要单独放置RUN apt-get更新,导致缓存问题]