文件下载
首先,下载想要安装的版本,目前最新的是1.8.0 根据你的python版本下载对应的whl文件,下载连接:https://pypi.org/project/tensorflow/#files。也可以下载历史版本:https://pypi.org/project/tensorflow/#history
尝试安装
pip install xxxxxx.whl
会提示依赖的文件不存在。接着通过能上网的机子百度去下载对应版本号的文件继续安装。
经过一系列的下载之后,tensorflow 安装需要以下依赖文件,通通装上。
最终能够成功安装tensorflow 。
如果运行如下命令不报错的情况下,恭喜你,安装成功。
python
>>> import tensorflow as tf
如果linux 系统原先没有安装过高版本的gcc,一般都会提示如下错误
ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.17' not found
(required by /usr/local/lib/python2.7/dist-
packages/tensorflow/python/_pywrap_tensorflow.so)
`GLIBC_2.17' 没找到。
采用如下命令查看当前系统支持的glibc版本
[root@localhost glibc]# strings /lib64/libc.so.6 | grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_PRIVATE
更新glibc版本,下载地址:http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz
执行以下步骤安装glibc
[xxx]# tar -xf glibc-2.17.tar.gz
[xxx]# cd glibc-2.17
[xxx]# mkdir build
[xxx]# cd build
[xxx]# ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
[xxx]# make -j 8
[xxx]# make install
重新查看会发现,glibc的版本已经添加上去:
[root@localhost glibc]# strings /lib64/libc.so.6 | grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_PRIVATE
查看映射:
[root@localhost glibc]# ll /lib64/libc.so.6
lrwxrwxrwx 1 root root 12 May 7 16:31 /lib64/libc.so.6 -> libc-2.17.so
此时,libc.so.6已经映射到了libc-2.17.so。如果不是要删除映射重新建立映射。
[xxx]# rm /lib64/libc.so.6
[xxx]# ln -s /lib64/libc-2.17.so /lib64/libc.so.6
这里需要注意的是,一旦/lib64/libc.so.6文件被删除ll,ls,ln 这些命令将无法使用。报如下错误:
error while loading shared libraries: libc.so.6: cannot open shared object file:
No such file or directory
采用以下命令进行急救:
[xxx]# ldconfig
继续尝试
>>> import tensorflow as tf
会报如下错误
ImportError: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found
查看已有的版本
[xxx]# ll /usr/lib64/libstdc++.so.6
lrwxrwxrwx 1 root root 19 May 7 17:58 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.13
[xxx]# strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_TM_1
CXXABI_FLOAT128
一般安装anaconda3 会有高版本的libstdc++.so.6存在。磁盘搜索
[xxx]# find / -name "libstdc++.so.*"
/root/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6
/root/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.24
/root/anaconda3/lib/libstdc++.so.6
/root/anaconda3/lib/libstdc++.so.6.0.24
/root/anaconda3/pkgs/libstdcxx-ng-7.2.0-h7a57d05_2/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6
/root/anaconda3/pkgs/libstdcxx-ng-7.2.0-h7a57d05_2/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.24
/root/anaconda3/pkgs/libstdcxx-ng-7.2.0-h7a57d05_2/lib/libstdc++.so.6
/root/anaconda3/pkgs/libstdcxx-ng-7.2.0-h7a57d05_2/lib/libstdc++.so.6.0.24
复制对应的版本到/usr/lib64/目录下
cp /root/anaconda3/lib/libstdc++.so.6.0.24 /usr/lib64/
同样修改软连接关系
[xxx]# rm /usr/lib64/libstdc++.so.6
[xxx]# ln -s /usr/lib64/libstdc++.so.6.0.24 /usr/lib64/libstdc++.so.6
这个问题也解决了,那能够成功导入吗?不要高兴的太早,有些同学可能会遇到如下问题:
>>>import tensorflow as tf
illegal instruction (core dumped)
各种查阅资料后发现官网上的安装方式和自家的CPU不匹配,需要从source安装。泪崩...
需要简单处理的同学可以尝试降低tensorflow的版本,如安装1.5.0版本,1.5.1同样会报illegal instruction (core dumped) 亲测。
参考资料:
glibc2.17安装: https://blog.csdn.net/wyl9527/article/details/78256066
linux文件删除急救:https://blog.csdn.net/xzx735/article/details/43227203
tensorflow 源码安装:https://blog.csdn.net/helei001/article/details/51285951
illegal instruction错误解决 https://blog.csdn.net/darklucky/article/details/79947048