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

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

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!


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


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

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 .


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!


@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.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.