docker中import cv2时提示libSM.so.6 错误的解决

非常适用于解决依赖问题

在docker中安装了opencv:pip install opencv-python 引入时提示如下

ImportError Traceback (most recent call last)
<ipython-input-2-d6fad459d9ee> in <module>
     17 import time
     18 import pickle
---> 19 import cv2
     20 import json
     21 import xml

/usr/local/lib/python3.6/dist-packages/cv2/__init__.py in <module>
      3 import sys
      4 
----> 5 from .cv2 import *
      6 from .data import *
      7 

ImportError: libSM.so.6: cannot open shared object file: No such file or directory

找不到libSM.so.6这个共享库,

1 安装apt-file来寻找这个共享库

apt-get update 
apt-get install apt-file 
apt-file update
apt-file search libSM.so.6

root@84c54a55d898:/workspace# apt-file search libSM.so.6 libsm6: /usr/lib/x86_64-linux-gnu/libSM.so.6 libsm6: /usr/lib/x86_64-linux-gnu/libSM.so.6.0.1

在这个目录中我没找到这两个文件,应该就是说缺少的意思吧?

2 apt-get install libsm6

后面连续提示了好几个:都是安装

apt-get install libxrender1
apt-get install libxext6

然后就ok了

在安装应用时,经常会碰到缺少各种文件、依赖等问题,例如缺少.so文件。Ubuntu中提供了一个强大的工具apt-file来查找依赖。常用的两大功能是:

搜索缺少的文件

apt-file会列出包含该文件的包,发现需要的包是python-opencv,然后安装python-opencv。

apt-file search cv.py

列出包中的文件

apt-file list [package name]

经验分享 程序员 微信小程序 职场和发展