ImportError: libSM.so.6: não é possível abrir o arquivo de objeto compartilhado: Esse arquivo ou diretório não existe

110

Ao tentar importar OpenCV, usando import cv2, obtenho o seguinte erro:

/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

Não tenho certeza de como consertar isso - tentando brincar com a nova ferramenta Colaboratory do Google . O Notebook está aqui: https://drive.google.com/file/d/0B7-sJqBiyjCcRmFkMzl6cy1iN0k/view?usp=sharing

Dmitry Rastorguev
fonte

Respostas:

135

Isso corrigiu o problema por tê-lo como as duas primeiras linhas do script:

!pip install opencv-python
!apt update && apt install -y libsm6 libxext6
!apt-get install -y libxrender-dev
Dmitry Rastorguev
fonte
1
você pode elobrate? de qual scirpt? cv2 / __ init__.py?
The Gr8 Adakron
26
@ TheGr8Adakron,sudo apt-get install libsm6
Alexander Lubyagin
63
Só compartilhando para que ajude a qualquer pessoa; Eu também tive que executar sudo apt-get install -y libxrender-devpara resolver o libXrendererro (que foi seguido por libsm6)
Akash Goyal
57

Você precisa adicionar sudo. Fiz o seguinte para instalá-lo:

sudo apt-get install libsm6 libxrender1 libfontconfig1

e fiz isso (opcional! talvez você não precise disso)

sudo python3 -m pip install opencv-contrib-python

FINALMENTE consegui!

Soufiane Chami
fonte
13
apenas usando apt-get install libsm6 libxrender1 libfontconfig1funcionou para mim
Jiloc
49

Para CentOS, execute este: sudo yum install libXext libSM libXrender

César
fonte
Isso causou um segfault ao executar R na linha de comando instalada pela minha instalação do Anaconda R.
blahblahetcetc
30

Agora existe uma versão sem opencv-pythoncabeçalho que remove as dependências gráficas (como libSM). Você pode ver a versão normal / headless na página de lançamentos (e o problema do GitHub que leva a isso); apenas adicione -headlessao instalar, por exemplo,

pip install opencv-python-headless
# also contrib, if needed
pip install opencv-contrib-python-headless
Nathan
fonte
Eu estava tendo um erro ao ImportError: libSM.so.6: cannot open shared object file: No such file or directoryadicionar headless, ele se foi
Vadim
também se alguém está procurando uma solução para executar o OpenCV no ambiente flexível do Google App Engine, esta é a solução.
Oğulcan Çelik
21

Pode ser que o problema esteja na sua python-opencvversão. É melhor fazer o downgrade de sua versão para 3.3.0.9 que não inclui nenhuma dependência de GUI. A mesma pergunta foi encontrada no GitHub aqui no link para a resposta .

de_billa_
fonte
2
pip install 'opencv-contrib-python == 3.3.0.9' (depois de remover o atual, é claro: pip uninstall opencv-contrib-python) - github.com/skvark/opencv-python/issues/44
Alex Punnen
2

Eu estava enfrentando um problema semelhante com o openCV na python:3.7-slimcaixa do dock . Seguir funcionou para mim:

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

Por favor, veja se isso ajuda!

utopia
fonte
@SaurabhGupta Obrigado, você está certo. Apenas corrigido.
Utopia
0

Não consegui instalar o cv2 no notebook Anaconda-Jupyter em execução no Ubuntu no Google Cloud Platform. Mas descobri uma maneira de fazer isso da seguinte maneira:

Execute o seguinte comando no terminal ssh e siga as instruções:

 sudo apt-get install libsm6 libxrender1 libfontconfig1

Depois de instalado, abra o notebook Jupyter e execute o seguinte comando:

!pip install opencv-contrib-python

Observação: tentei executar este comando: "sudo python3 -m pip install opencv-contrib-python", mas estava apresentando um erro. Mas o comando acima funcionou para mim.

Agora atualize a página do notebook e verifique se está instalado ou não executando import cv2no notebook.

Yogesh
fonte
0

Eu tive o mesmo problema em dockere estas etapas funcionaram para mim:

apt update

então:

apt install libsm6 libxext6 libxrender-dev
hossein hayati
fonte