您的位置:首页 > 其它

Ubuntu16.04+Anaconda环境下dlib库无法导入解决方法

2017-08-03 09:40 246 查看
环境配置:Ubuntu16.04+Anaconda4.4.0(python3.6)

背景:dlib库本人是采用pip安装的,安装过程中显示安装成功,并且在conda list指令下可以看出dlib已经正常安装:



但进入python后并import dlib会出现如下错误:

>>> import dlib

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

  File "/home/gonggu/dlib/__init__.py", line 1, in <module>

    from .dlib import *

ImportError: /home/gonggu/anaconda3/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /usr/lib/x86_64-linux-gnu/libboost_python-py35.so.1.58.0)

此时作为一个小白,我没有丝毫犹豫直接求助了百度,并找到了此篇文章:

参考文章:http://blog.csdn.net/luoww1/article/details/51509298

按照这篇文章里的方法我运行以下命令检查动态库:

strings /usr/lib64/libstdc++.so.6 | grep GLIBC


并发现了如下结果:



看来问题确实是出在动态库没有及时更新,编译器链接的依旧是老版本动态库。

这篇文章给出的解决方法是系统没有安装Anaconda来管理库的,所以我以此为参考,解决了对于我的Anaconda环境配置下出现的问题。

问题解决

首先进入到生成了最新动态库的文件夹:

cd /usr/lib/x86_64-linux-gnu


并运用root权限查看文件夹里的所有文件:

sudo ls


并找到了已编译的最新动态库,我的是libstdc++.so.6.0.21

接下来返回去查看之前import dlib的错误报告,找到Anaconda文件夹下动态库的地址,我的是/home/gonggu/anaconda3/bin/../lib

于是将最新动态库复制到此文件夹中:

sudo cp libstdc++.so.6.0.21 /home/gonggu/anaconda3/bin/../lib/


之后重新建立默认库的软连接,切换目录至Anaconda文件夹下的动态库地址:

cd /home/gonggu/anaconda3/bin/../lib


删除原来的软连接:

rm -rf libstdc++.so.6


重建默认软连接,使其指向最新的动态库:

ln -s libstdc++.so.6.0.21 libstdc++.so.6


完成以上步骤后,再次打开python编译器,查看dlib已经能够正常导入了:



参考文章:http://blog.csdn.net/luoww1/article/details/51509298
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: