ImportError:libSM.so.6:无法打开共享对象文件:没有这样的文件或目录

时间:2017-11-04 16:41:24

标签: python opencv python-import importerror python-module

尝试导入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的新Colaboratory工具。笔记本在这里:https://drive.google.com/file/d/0B7-sJqBiyjCcRmFkMzl6cy1iN0k/view?usp=sharing

9 个答案:

答案 0 :(得分:77)

通过将其作为脚本的前两行来解决问题:

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

答案 1 :(得分:26)

您需要添加sudo。我做了以下安装工作:

  • sudo apt-get install libsm6 libxrender1 libfontconfig1

然后做到了

  • sudo python3 -m pip install opencv-contrib-python

终于完成了!

答案 2 :(得分:18)

对于CentOS,运行: sudo yum install libXext libSM libXrender

答案 3 :(得分:14)

问题在于您的python-opencv版本。将版本降级到3.3.0.9会更好,因为它不包含任何GUI依赖项。同样的问题在GitHub上找到了answer的链接。

答案 4 :(得分:4)

现在有opencv-python的无头版本,它删除了图形依赖性(例如libSM)。您可以在releases page上看到普通/无头版本(以及导致该问题的GitHub issue);只需在安装时添加-headless,例如

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

答案 5 :(得分:3)

我在docker中遇到了同样的问题,而these steps为我工作:

apt update

然后:

apt install libsm6 libxext6 libxrender-dev

答案 6 :(得分:1)

我在python:3.7-slim码头箱上遇到了openCV的类似问题。以下对我有用:

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

请查看是否有帮助!

答案 7 :(得分:0)

我无法在Google Cloud Platform上在Ubuntu上运行的Anaconda-Jupyter笔记本上安装cv2。但是我找到了一种方法,如下所示:

从ssh终端运行以下命令,并按照说明进行操作:

 sudo apt-get install libsm6 libxrender1 libfontconfig1

安装完成后,打开Jupyter笔记本并运行以下命令:

!pip install opencv-contrib-python

注意:我试图运行此命令:“ sudo python3 -m pip install opencv-contrib-python”,但显示错误。但是上面的命令对我有用。

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

答案 8 :(得分:0)

我在使用 heroku 时遇到了同样的错误,请按照下列步骤操作:

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

在(我的情况)中是这样的

libsm6
libxrender1
libfontconfig1
libice6

现在尝试将代码推送到 heroku。这将完成工作。

或者你仍然可以参考这个blog