ImportError: libSM.so.6: не вдається відкрити спільний файл об'єкта: такого файлу чи каталогу немає


110

При спробі імпортувати 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

Відповіді:


135

Це вирішило проблему, оскільки вона була першими двома рядками сценарію:

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

1
ти можеш елобрувати? з яких scirpt? cv2 / __ init__.py?
Gr8 Adakron

26
@ TheGr8Adakron,sudo apt-get install libsm6
Олександр Лубягін

63
Просто ділимось, щоб це могло комусь допомогти; Мені також довелося бігти, sudo apt-get install -y libxrender-devщоб вирішити libXrenderпомилку (за якою слідував libsm6)
Akash Goyal

57

Вам потрібно додати судо. Я зробив наступне, щоб встановити його:

sudo apt-get install libsm6 libxrender1 libfontconfig1

а потім зробив це (необов’язково! можливо, воно вам не знадобиться)

sudo python3 -m pip install opencv-contrib-python

НАЗАГАЛЬНО це зробили!


13
просто використовуючи apt-get install libsm6 libxrender1 libfontconfig1працював для мене
Jiloc

49

Для CentOS запустіть це: sudo yum install libXext libSM libXrender


Це спричинило сегментацію під час запуску R у командному рядку, встановленому моєю установкою Anaconda R.
blahblahetcetc

30

Зараз існує безголова версія, opencv-pythonяка знімає графічні залежності (наприклад, libSM). Ви можете побачити звичайну / безголову версію на сторінці випусківпроблему GitHub, що призвела до цього); просто додайте -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колись додав помилку, безголовий її вже немає
Вадим

також якщо хтось шукає рішення для запуску OpenCV в гнучкому середовищі Google App Engine, це рішення.
Oğulcan Çelik

21

Можливо, проблема у вашій python-opencvверсії. Краще знизити версію до версії 3.3.0.9, яка не включає ніяких залежностей графічного інтерфейсу. Те саме питання було знайдено на GitHub тут, посилання на відповідь .


2
pip install 'opencv-contrib-python == 3.3.0.9' (звичайно, після видалення поточного: pip uninstall opencv-contrib-python) - github.com/skvark/opencv-python/issues/44
Alex Punnen

2

Я стикався з подібною проблемою з openCV на панелі python:3.7-slimдокерів. Слідом зробив для мене трюк:

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

Будь ласка, подивіться, чи це допомагає!


@SaurabhGupta Дякую, ти маєш рацію. Просто виправлено.
Утопія

0

Мені не вдалося встановити cv2 на ноутбук Anaconda-Jupyter, що працює на Ubuntu на Google Cloud Platform. Але я знайшов спосіб зробити це наступним чином:

Запустіть наступну команду з терміналу ssh і дотримуйтесь інструкцій:

 sudo apt-get install libsm6 libxrender1 libfontconfig1

Після встановлення відкрийте блокнот Jupyter і запустіть таку команду:

!pip install opencv-contrib-python

Примітка. Я намагався запустити цю команду: "sudo python3 -m pip install opencv-contrib-python", але вона показувала помилку. Але вищезазначена команда спрацювала для мене.

Тепер оновіть сторінку блокнота та перевірте, встановлено він чи ні, запустівши import cv2в блокноті.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.