ImportError: libSM.so.6: không thể mở tệp đối tượng được chia sẻ: Không có tệp hoặc thư mục như vậy


110

Khi cố gắng nhập OpenCV bằng cách sử dụng, import cv2tôi gặp lỗi sau:

/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

Không chắc chắn về cách khắc phục sự cố này - đang thử sử dụng công cụ Colaboratory mới của Google . Notebook ở đây: https://drive.google.com/file/d/0B7-sJqBiyjCcRmFkMzl6cy1iN0k/view?usp=sharing

Câu trả lời:


135

Điều này đã khắc phục sự cố bằng cách đặt nó dưới dạng hai dòng đầu tiên của tập lệnh:

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

1
bạn có thể elobrate? trong số đó scirpt? cv2 / __ init__.py?
Gr8 Adakron

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

63
Chỉ chia sẻ để nó có thể giúp ích cho mọi người; Tôi cũng đã phải chạy sudo apt-get install -y libxrender-devtới quyết libXrenderlỗi (mà đã được theo sau bởi libsm6)
Akash Goyal

57

Bạn cần thêm sudo. Tôi đã làm như sau để cài đặt nó:

sudo apt-get install libsm6 libxrender1 libfontconfig1

và sau đó đã làm điều đó (tùy chọn! có thể bạn sẽ không cần nó)

sudo python3 -m pip install opencv-contrib-python

CUỐI CÙNG đã hoàn thành!


13
chỉ sử dụng apt-get install libsm6 libxrender1 libfontconfig1làm việc cho tôi
Jiloc

49

Đối với CentOS, hãy chạy cái này: sudo yum install libXext libSM libXrender


Điều này gây ra lỗi segfault khi chạy R trên dòng lệnh như được cài đặt bởi cài đặt Anaconda R của tôi.
blahblahetcetc

30

Hiện có một phiên bản không có đầu opencv-pythonđể loại bỏ các phụ thuộc đồ họa (như libSM). Bạn có thể thấy phiên bản bình thường / không có đầu trên trang phát hành (và vấn đề GitHub dẫn đến điều này); chỉ thêm -headlesskhi cài đặt, ví dụ:

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

Tôi đã gặp lỗi ImportError: libSM.so.6: cannot open shared object file: No such file or directorykhi thêm đầu vào, nó biến mất
Vadim

Ngoài ra, nếu bất kỳ ai đang tìm kiếm giải pháp để chạy OpenCV trên môi trường Google App Engine Linh hoạt, đây là giải pháp.
Oğulcan Çelik

21

Có thể vấn đề là với python-opencvphiên bản của bạn . Tốt hơn là hạ cấp phiên bản của bạn xuống 3.3.0.9 không bao gồm bất kỳ phụ thuộc GUI nào. Câu hỏi tương tự đã được tìm thấy trên GitHub, đây là liên kết dẫn đến câu trả lời .


2
pip install 'opencv-Contrib-python == 3.3.0.9' (tất nhiên là sau khi xóa cái hiện tại: pip gỡ cài đặt opencv-Contrib-python) - github.com/skvark/opencv-python/issues/44
Alex Punnen

2

Tôi đã gặp sự cố tương tự với openCV trên python:3.7-slimhộp docker . Sau đây là mẹo cho tôi:

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

Hãy xem nếu điều này giúp đỡ!


@SaurabhGupta Cảm ơn, bạn đã đúng. Chỉ cần sửa chữa.
Utopia

0

Tôi không thể cài đặt cv2 trên sổ ghi chép Anaconda-Jupyter chạy trên Ubuntu trên Google Cloud Platform. Nhưng tôi đã tìm ra một cách để làm điều đó như sau:

Chạy lệnh sau từ ssh terminal và làm theo hướng dẫn:

 sudo apt-get install libsm6 libxrender1 libfontconfig1

Sau khi nó được cài đặt Mở sổ ghi chép Jupyter và chạy lệnh sau:

!pip install opencv-contrib-python

Lưu ý: Tôi đã cố gắng chạy lệnh này: "sudo python3 -m pip install opencv-Contrib-python" nhưng nó đang hiển thị lỗi. Nhưng lệnh trên đã làm việc cho tôi.

Bây giờ, hãy làm mới trang sổ ghi chép và kiểm tra xem nó đã được cài đặt hay chưa bằng cách chạy import cv2trong sổ ghi chép.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.