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]
