ImportError: libSM.so.6: nie można otworzyć pliku obiektu współdzielonego: nie ma takiego pliku lub katalogu

112

Podczas próby zaimportowania OpenCV, za pomocą import cv2otrzymuję następujący błąd:

/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

Nie jestem pewien, jak to naprawić - próbuję bawić się nowym narzędziem Google Colaboratory . Notatnik jest tutaj: https://drive.google.com/file/d/0B7-sJqBiyjCcRmFkMzl6cy1iN0k/view?usp=sharing

Dmitrij Rastorguev
źródło

Odpowiedzi:

139

To rozwiązało problem, umieszczając go jako pierwsze dwie linie skryptu:

!pip install opencv-python
!apt update && apt install -y libsm6 libxext6
!apt-get install -y libxrender-dev
Dmitrij Rastorguev
źródło
1
czy możesz elobrate? z których scirpt? cv2 / __ init__.py?
Gr8 Adakron
27
@ TheGr8Adakron,sudo apt-get install libsm6
Alexander Lubyagin
63
Po prostu dzielenie się, aby to mogło pomóc każdemu; Musiałem też biec, sudo apt-get install -y libxrender-devaby rozwiązać libXrenderbłąd (po którym nastąpiło libsm6)
Akash Goyal
57

Musisz dodać sudo. Wykonałem następujące czynności, aby go zainstalować:

sudo apt-get install libsm6 libxrender1 libfontconfig1

a potem to zrobiłem (opcjonalnie! może nie będziesz tego potrzebować)

sudo python3 -m pip install opencv-contrib-python

WRESZCIE to zrobione!

Soufiane Chami
źródło
13
samo używanie apt-get install libsm6 libxrender1 libfontconfig1działało dla mnie
Jiloc
50

W przypadku CentOS uruchom to: sudo yum install libXext libSM libXrender

Cezar
źródło
Spowodowało to awarię segfault podczas uruchamiania R w wierszu poleceń zainstalowanego przez moją instalację Anaconda R.
blahblahetcetc
30

Obecnie dostępna jest wersja bezgłowa, opencv-pythonktóra usuwa zależności graficzne (np. LibSM). Możesz zobaczyć wersję normalną / bezgłową na stronie z wydaniami (i prowadzący do tego problem z GitHub ); po prostu dodaj -headlessprzy instalacji np.

pip install opencv-python-headless
# also contrib, if needed
pip install opencv-contrib-python-headless
Nathan
źródło
Miałem błąd, ImportError: libSM.so.6: cannot open shared object file: No such file or directorygdy dodałem bezgłowy, zniknął
Vadim
również jeśli ktoś szuka rozwiązania do uruchomienia OpenCV w elastycznym środowisku Google App Engine, to jest to rozwiązanie.
Oğulcan Çelik
21

Być może problem dotyczy twojej python-opencvwersji. Lepiej jest obniżyć wersję do 3.3.0.9, która nie zawiera żadnych zależności GUI. To samo pytanie zostało znalezione na GitHub, tutaj link do odpowiedzi .

de_billa_
źródło
2
pip install 'opencv-contrib-python == 3.3.0.9' (oczywiście po usunięciu obecnego: pip uninstall opencv-contrib-python) - github.com/skvark/opencv-python/issues/44
Alex Punnen
2

Miałem podobny problem z openCV na dockerze python:3.7-slim. Następujące zrobiły dla mnie sztuczkę:

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

Sprawdź, czy to pomaga!

utopia
źródło
@SaurabhGupta Dzięki, masz rację. Właśnie poprawione.
Utopia
0

Nie udało mi się zainstalować cv2 na notebooku Anaconda-Jupyter działającym na Ubuntu na Google Cloud Platform. Ale znalazłem sposób, aby to zrobić w następujący sposób:

Uruchom następujące polecenie z terminala ssh i postępuj zgodnie z instrukcjami:

 sudo apt-get install libsm6 libxrender1 libfontconfig1

Po zainstalowaniu Otwórz notatnik Jupyter i uruchom następujące polecenie:

!pip install opencv-contrib-python

Uwaga: próbowałem uruchomić to polecenie: „sudo python3 -m pip install opencv-contrib-python”, ale pokazywało błąd. Ale powyższe polecenie zadziałało dla mnie.

Teraz odśwież stronę notatnika i sprawdź, czy jest zainstalowana, czy nie, uruchamiając import cv2w notebooku.

Yogesh
źródło
0

Miałem ten sam problem dockeri te kroki zadziałały:

apt update

następnie:

apt install libsm6 libxext6 libxrender-dev
hossein hayati
źródło