Linux(Red hat)無網離線安裝TensorFlow


文件下載

首先,下載想要安裝的版本,目前最新的是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
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM