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

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

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

apt install libgl1-mesa-glx

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

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


当前回答

如果你使用CentOS、RHEL、Fedora或其他使用yum的linux发行版,你将需要:

sudo yum install mesa-libGL -y

其他回答

对于树莓派来说,这样写,为我工作:

sudo apt-get install ffmpeg libsm6 libxext6  -y

我在docker容器中使用cv2时遇到了这个问题。我通过:

pip install opencv-contrib-python

安装opencv-contrib-python而不是opencv-python。

当我试图在GCP Appengine Flex服务器环境中使用OpenCV时,我得到了同样的错误。将requirements.txt中的“opencv-python”替换为“opencv-python-headless”解决了这个问题。

OpenCV文档讨论了桌面和服务器(无头)环境的不同包。

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

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