tensorflow ImportError:/home/user/anaconda3/bin/../lib/libstdc++.so.6:版本`GLIBCXX_3.4.20'未找到

时间:2017-08-27 15:51:17

标签: ubuntu tensorflow anaconda

尝试在Ubuntu 16.04 LTS上的anaconda3环境中从源构建tensorflow并且构​​建成功但是当我尝试时:

import tensorflow as tf

它给了我错误:

  

ImportError:/home/user/anaconda3/bin/../lib/libstdc++.so.6:版本   `GLIBCXX_3.4.20'找不到

我已查看并认为可能libgcc已过时,所以我尝试conda install libgcc安装了一个列有GLIBCXX_3.4.20的新库;然而,似乎anaconda将其安装到虚拟环境中,但 tensorflow 正在anaconda3/lib文件夹中查找它,我该如何解决这个问题?如果没有重新安装anaconda并从源代码重建(这需要很长时间),是否有一个简单的解决方案?

(tensorflow) user@user-VirtualBox:~$ strings /home/user/anaconda3/bin/../lib/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

conda install libgcc将新libgcc安装到虚拟环境文件夹中:

(tensorflow) user@user-VirtualBox:~$ strings /home/user/anaconda3/envs/tensorflow/lib/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_DEBUG_MESSAGE_LENGTH
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21

您可能已经注意到,/home/user/anaconda3/envs/tensorflow/lib/libstdc++.so.6确实列出了GLIBCXX_3.4.20/home/user/anaconda3/bin/../lib/libstdc++.so.6没有。

1 个答案:

答案 0 :(得分:1)

我暂时解决了this answer之后的问题,这就是我所做的:

1)激活虚拟环境:

source activate virtual-env-name

2)安装较新版本的libstdc++.so.6,在我的情况下libgcc版本为5+ anaconda3

conda install libgcc

3)转到anaconda3/lib文件夹:

cd ~/anaconda3/lib

4)备份libstdc++.so.6

mv -vf libstdc++.so.6 libstdc++.so.6.old

5)在这里链接新安装的libstdc++.so.6虚拟环境库,virtual-env-name是虚拟环境名称:

ln -s ~/anaconda3/envs/virtual-env-name/lib/libstdc++.so.6 ./libstdc++.so.6

希望这对遇到同样问题的其他人有帮助。