文件下載
首先,下載想要安裝的版本,目前最新的是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
作者:IT屌絲逆襲日記
鏈接:https://www.jianshu.com/p/36e547419c96
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。