ImportError: libSM.so.6: impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire de ce type

112

Lorsque vous essayez d'importer OpenCV, import cv2j'obtiens l'erreur suivante en utilisant :

/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

Je ne sais pas comment résoudre ce problème - essayez de jouer avec le nouvel outil de collaboration de Google . Notebook est ici: https://drive.google.com/file/d/0B7-sJqBiyjCcRmFkMzl6cy1iN0k/view?usp=sharing

Dmitry Rastorguev
la source

Réponses:

138

Cela a résolu le problème en l'affichant comme les deux premières lignes du script:

!pip install opencv-python
!apt update && apt install -y libsm6 libxext6
!apt-get install -y libxrender-dev
Dmitry Rastorguev
la source
1
pouvez-vous élobrer? de quel scirpt? cv2 / __ init__.py?
The Gr8 Adakron
27
@ TheGr8Adakron,sudo apt-get install libsm6
Alexander Lubyagin
63
Juste partager pour que cela puisse aider n'importe qui; J'ai également dû courir sudo apt-get install -y libxrender-devpour résoudre une libXrendererreur (qui a été suivie par libsm6)
Akash Goyal
57

Vous devez ajouter sudo. J'ai fait ce qui suit pour l'installer:

sudo apt-get install libsm6 libxrender1 libfontconfig1

et puis fait ça (facultatif! peut-être que vous n'en aurez pas besoin)

sudo python3 -m pip install opencv-contrib-python

FINALEMENT réussi!

Soufiane Chami
la source
13
juste en utilisant apt-get install libsm6 libxrender1 libfontconfig1travaillé pour moi
Jiloc
50

Pour CentOS, exécutez ceci: sudo yum install libXext libSM libXrender

César
la source
Cela provoquait une erreur de segmentation lors de l'exécution de R sur la ligne de commande telle qu'installée par mon installation Anaconda R.
blahblahetcetc
30

Il existe maintenant une version headless opencv-pythonqui supprime les dépendances graphiques (comme libSM). Vous pouvez voir la version normale / sans tête sur la page des versions (et le problème GitHub menant à cela); il suffit d'ajouter -headlesslors de l'installation, par exemple,

pip install opencv-python-headless
# also contrib, if needed
pip install opencv-contrib-python-headless
Nathan
la source
J'avais ImportError: libSM.so.6: cannot open shared object file: No such file or directoryune erreur une fois ajoutée sans tête, c'est parti
Vadim
également si quelqu'un cherche une solution pour exécuter OpenCV sur l'environnement flexible de Google App Engine, c'est la solution.
Oğulcan Çelik
21

Le problème vient peut-être de votre python-opencvversion. Il est préférable de rétrograder votre version à 3.3.0.9 qui n'inclut aucune dépendance d'interface graphique. La même question a été trouvée sur GitHub ici le lien vers la réponse .

de_billa_
la source
2
pip install 'opencv-contrib-python == 3.3.0.9' (après avoir supprimé l'actuel, bien sûr: pip uninstall opencv-contrib-python) - github.com/skvark/opencv-python/issues/44
Alex Punnen
2

J'étais confronté à un problème similaire avec openCV sur la python:3.7-slimboîte de docker. La suite a fait l'affaire pour moi:

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

Veuillez voir si cela aide!

utopie
la source
@SaurabhGupta Merci, vous avez raison. Juste corrigé.
Utopia
0

Je n'ai pas pu installer cv2 sur un notebook Anaconda-Jupyter fonctionnant sous Ubuntu sur Google Cloud Platform. Mais j'ai trouvé un moyen de le faire comme suit:

Exécutez la commande suivante à partir du terminal ssh et suivez les instructions:

 sudo apt-get install libsm6 libxrender1 libfontconfig1

Une fois installé, ouvrez le notebook Jupyter et exécutez la commande suivante:

!pip install opencv-contrib-python

Remarque: j'ai essayé d'exécuter cette commande: "sudo python3 -m pip install opencv-contrib-python" mais elle affichait une erreur. Mais la commande ci-dessus a fonctionné pour moi.

Actualisez maintenant la page du bloc-notes et vérifiez s'il est installé ou non en l'exécutant import cv2dans le bloc-notes.

Yogesh
la source
0

J'ai eu le même problème dockeret ces étapes ont fonctionné pour moi:

apt update

puis:

apt install libsm6 libxext6 libxrender-dev
hossein hayati
la source