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

来源:互联网 发布:python字典iteritems 编辑:程序博客网 时间:2024/05/16 08:32

环境配置: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

阅读全文
3 0