ImportError: libSM.so.6: impossibile aprire il file oggetto condiviso: nessun file o directory di questo tipo


110

Quando import cv2provo a importare OpenCV, utilizzando ottengo il seguente errore:

/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

Non sono sicuro di come risolvere questo problema, provando a giocare con il nuovo strumento di Google Colaboratory . Notebook è qui: https://drive.google.com/file/d/0B7-sJqBiyjCcRmFkMzl6cy1iN0k/view?usp=sharing

Risposte:


135

Questo ha risolto il problema disponendolo come prime due righe dello script:

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

1
puoi elobrate? di quale scirpt? cv2 / __ init__.py?
Il Gr8 Adakron

26
@ TheGr8Adakron,sudo apt-get install libsm6
Alexander Lubyagin

63
Basta condividere in modo che possa aiutare chiunque; Ho anche dovuto correre sudo apt-get install -y libxrender-devper risolvere l' libXrendererrore (seguito da libsm6)
Akash Goyal il

57

Devi aggiungere sudo. Ho fatto quanto segue per installarlo:

sudo apt-get install libsm6 libxrender1 libfontconfig1

e poi l'ho fatto (opzionale! forse non ne avrai bisogno)

sudo python3 -m pip install opencv-contrib-python

FINALMENTE fatto!


13
solo usando ha apt-get install libsm6 libxrender1 libfontconfig1funzionato per me
Jiloc

49

Per CentOS, esegui questo: sudo yum install libXext libSM libXrender


Ciò ha causato un segfault durante l'esecuzione di R sulla riga di comando come installato dalla mia installazione di Anaconda R.
blahblahetcetc

30

Ora esiste una versione headless di opencv-pythoncui rimuove le dipendenze grafiche (come libSM). Puoi vedere la versione normale / headless nella pagina delle versioni (e il problema di GitHub che porta a questo); basta aggiungere -headlessdurante l'installazione, ad es.

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

Stavo riscontrando un errore ImportError: libSM.so.6: cannot open shared object file: No such file or directoryuna volta aggiunto senza testa è sparito
Vadim

anche se qualcuno cerca una soluzione per eseguire OpenCV sull'ambiente flessibile di Google App Engine, questa è la soluzione.
Oğulcan Çelik,

21

Potrebbe essere il problema con la tua python-opencvversione. È meglio eseguire il downgrade della versione a 3.3.0.9 che non include alcuna dipendenza dalla GUI. Stessa domanda è stata trovata su GitHub qui il link alla risposta .


2
pip install 'opencv-contrib-python == 3.3.0.9' (dopo aver rimosso quello attuale, ovviamente: pip uninstall opencv-contrib-python) - github.com/skvark/opencv-python/issues/44
Alex Punnen

2

Stavo affrontando un problema simile con openCV sulla python:3.7-slimfinestra mobile. Di seguito ha fatto il trucco per me:

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

Per favore vedi se questo aiuta!


@SaurabhGupta Grazie, hai ragione. Appena corretto.
Utopia

0

Non sono riuscito ad installare cv2 su notebook Anaconda-Jupyter in esecuzione su Ubuntu su Google Cloud Platform. Ma ho trovato un modo per farlo come segue:

Esegui il seguente comando dal terminale ssh e segui le istruzioni:

 sudo apt-get install libsm6 libxrender1 libfontconfig1

Una volta installato, apri il notebook Jupyter ed esegui il seguente comando:

!pip install opencv-contrib-python

Nota: ho provato a eseguire questo comando: "sudo python3 -m pip install opencv-contrib-python" ma mostrava un errore. Ma il comando sopra ha funzionato per me.

Ora aggiorna la pagina del taccuino e controlla se è installato o meno eseguendolo import cv2nel taccuino.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.