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

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

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

apt install libgl1-mesa-glx

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

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


当前回答

在我看来,这是一个更好的解决方案。python3-opencv包包含OpenCV的所有系统依赖项。

RUN apt-get update && apt-get install -y python3-opencv
RUN pip install opencv-python

其他回答

我在Ubuntu桌面上遇到了同样的问题,其他的解决方案都不适合我。

libGL.so。正确安装了1,但由于某种原因Python无法看到它:

$ ldconfig -p | grep libGL.so.1
    libGL.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libGL.so.1

唯一有效的解决方案是在LD_LIBRARY_PATH中强制使用它。在~/中添加以下内容。然后运行source ~/。Bashrc或重新启动shell:

export LD_LIBRARY_PATH="/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH"

我知道LD_LIBRARY_PATH不好,但对我来说,这是唯一可行的解决方案。

对我来说,这个问题与代理设置有关。对于pypi,我使用nexus镜像到pypi,对于opencv什么都不工作。直到我连接到另一个网络。

在rocky linux 9中,我使用命令解决了这个错误 安装mesa-libGLU

在我看来,这是一个更好的解决方案。python3-opencv包包含OpenCV的所有系统依赖项。

RUN apt-get update && apt-get install -y python3-opencv
RUN pip install opencv-python

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