不能打开共享对象文件: 没有这样的文件或目录

当尝试导入 OpenCV 时,使用 import cv2我会得到以下错误:

/usr/local/lib/python2.7/dist-packages/cv2/__init__.py in <module>()
7
8 # make IDE's (PyCharm) autocompletion happy
----> 9 from .cv2 import *
10
11 # wildcard import above does not import "private" variables like __version__


ImportError: libSM.so.6: cannot open shared object file: No such file or directory

不知道如何解决这个问题——试着玩玩 Google 的新 合作工具

147495 次浏览

通过将其作为脚本的前两行,解决了这个问题:

!pip install opencv-python
!apt update && apt install -y libsm6 libxext6
!apt-get install -y libxrender-dev

对于 CentOS,运行以下命令: sudo yum install libXext libSM libXrender

也许问题出在你的 python-opencv版本上。最好将你的版本降级到3.3.0.9,这个版本不包括任何 GUI 依赖。在 GitHub 上也发现了同样的问题链接到 回答

您需要添加 sudo:

sudo apt-get install libsm6 libxrender1 libfontconfig1

然后这样做(可选! 也许你不需要它)

sudo python3 -m pip install opencv-contrib-python

终于搞定了!

我无法在 Anaconda-Jupiter 笔记本上安装 cv2,这个笔记本在谷歌云平台的 Ubuntu 上运行。但我找到了一种方法:

从 ssh 终端运行以下命令并遵循指令:

 sudo apt-get install libsm6 libxrender1 libfontconfig1

一旦安装完毕,打开朱庇特笔记本,运行以下命令:

!pip install opencv-contrib-python

注意: 我尝试运行这个命令: “ sudo python3-m pip install opencv-Contrib-python”,但它显示了一个错误。但上面的命令对我很有效。

现在刷新笔记本页面,通过在笔记本中运行 import cv2来检查它是否已经安装。

现在有一个无头版本的 opencv-python,它删除了图形依赖关系(如 libSM)。你可以在 版本上看到正常/无头版本(以及导致这种情况的 GitHub 的问题) ; 只需在安装时添加 -headless,例如,

pip install opencv-python-headless
# also contrib, if needed
pip install opencv-contrib-python-headless

我在 python:3.7-slim码头箱上的 openCV 也遇到了类似的问题:

apt-get install build-essential libglib2.0-0 libsm6 libxext6 libxrender-dev

请看看这是否有帮助!

我在 docker这些步骤中遇到了同样的问题:

apt update

然后:

apt install libsm6 libxext6 libxrender-dev

我使用 heroku 得到了相同的错误,按照下面的步骤:

在你的回购中添加一个名为 Aptfile 的文件 并包含要安装在该 Aptfile 中的 apt 包名称列表

(我的情况)这样的事

libsm6
libxrender1
libfontconfig1
libice6

现在试试把代码推到 heroku 这样就行了。

或者你仍然可以参考这个 博客