【问题标题】:ImportError: libSM.so.6: cannot open shared object file: No such file or directoryImportError:libSM.so.6:无法打开共享对象文件:没有这样的文件或目录
【发布时间】:2018-04-17 04:54:16
【问题描述】:

在尝试导入 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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 你能详细说明一下吗?哪个剧本? cv2/__init__.py?
    • @TheGr8Adakron, sudo apt-get install libsm6
    • 只是分享以便它可以帮助任何人;我还必须运行 sudo apt-get install -y libxrender-dev 来解决 libXrender 错误(随后是 libsm6)
    【解决方案2】:

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

    sudo apt-get install libsm6 libxrender1 libfontconfig1
    

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

    sudo python3 -m pip install opencv-contrib-python
    

    终于搞定了!

    【讨论】:

    • 只使用apt-get install libsm6 libxrender1 libfontconfig1 为我工作
    • 如果您已经是特权用户(例如在 Docker 容器中),则不需要sudo,否则您需要。
    【解决方案3】:

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

    【讨论】:

    • 这会在我的 Anaconda R 安装程序安装的命令行上运行 R 时导致段错误。
    • 就我而言,已经安装了 64 位版本,所以我不得不使用:sudo yum install libSM.i686
    【解决方案4】:

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

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

    【讨论】:

    • 我遇到了错误ImportError: libSM.so.6: cannot open shared object file: No such file or directory,一旦添加了无头,它就消失了
    • 如果有人正在寻找在 Google App Engine 灵活环境中运行 OpenCV 的解决方案,这就是解决方案。
    【解决方案5】:

    问题可能出在您的python-opencv 版本上。最好将您的版本降级到不包含任何 GUI 依赖项的 3.3.0.9。在 GitHub 上找到了相同的问题,这里是 answer 的链接。

    【讨论】:

    【解决方案6】:

    我在dockerthese steps 中遇到了同样的问题:

    apt update
    

    然后:

    apt install libsm6 libxext6 libxrender-dev
    

    【讨论】:

      【解决方案7】:

      我在python:3.7-slim docker box 上遇到了与 openCV 类似的问题。以下对我有用:

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

      请看看这是否有帮助!

      【讨论】:

      • @SaurabhGupta 谢谢,你是对的。刚刚更正。
      【解决方案8】:

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

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

       sudo apt-get install libsm6 libxrender1 libfontconfig1
      

      安装后打开 Jupyter notebook 并运行以下命令:

      !pip install opencv-contrib-python
      

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

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

      【讨论】:

        【解决方案9】:

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

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

        在我的情况下是这样的

        libsm6
        libxrender1
        libfontconfig1
        libice6
        

        现在尝试将代码推送到 heroku。这样就可以了。

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

        【讨论】:

        • 您能否尝试将 Aptfile 的内容包含在问题的案例中或您的案例中?
        • 我得到了同样的错误,这个错误的原因是以下包不包含在 opencv 包中。所以这些要明确安装。我想同样的内容也可以解决这个问题。
        • 如果要在每次部署到新服务器后显式安装软件包,最好的方法是添加 Aptfile 并将内容放入其中。而是使用 cli 和 apt - 获取安装。
        猜你喜欢
        • 2015-11-30
        • 2020-10-19
        • 1970-01-01
        • 2021-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-13
        • 1970-01-01
        相关资源
        最近更新 更多