【已解決】匯入tensorflow出現ImportError
阿新 • • 發佈:2018-12-17
原先在Ubuntu16.04下執行的tensorflow是1.1版的,今天將Python升級為3.6.5版,用Anaconda安裝了tensorflow1.4.1,安裝沒有出現問題提示,在匯入tensorflow時出現:
ImportError: /home/ctr/anaconda3/lib/python3.6/site-packages/tensorflow/python/../../../../libstdc++.so.6: version `CXXABI_1.3.11' not found (required by/home/ctr/anaconda3/lib/python3.6/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so)
開頭以為是/libstdc++庫缺失的問題,於是:
sudo apt-get update
sudo apt-get install libsc
問題依舊,後來按如下方式解決:
1.檢查動態庫
$ strings /home/ctr/anaconda3/lib/python3.6/site-packages/matplotlib/../../../libstdc++.so.6 | grep CXXABI
輸出如下:
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_1.3.7 CXXABI_1.3.8 CXXABI_1.3.9 CXXABI_TM_1 CXXABI_FLOAT128
確實沒有問題中所說的CXXABI_1.3.11
2.檢視libstdc++.so.6的連結指向
$ ls -l /home/ctr/anaconda3/lib/python3.6/site-packages/matplotlib/../../../libstdc++.so.6
可以看到指向的是libstdc++.so.6.0.21
3.查詢編譯gcc
時生成的最新動態庫
可以看到最新動態庫是libstdc++.so.6.0.25,最新目錄:/home/ctr/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.25
4.將上面的最新目錄複製到出現問題的目錄下
cp /home/ctr/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.25 /home/ctr/anaconda3/lib/python3.6/site-packages/matplotlib/../../../libstdc++.so.6
5.更新動態庫指向
cd /usr/lib
rm –rf libstdc++.so.6
ln -s libstdc++.so.6.25 libstdc++.so.6
6.預設動態庫指向更新完成,重新檢查一下
strings /home/ctr/anaconda3/lib/python3.6/site-packages/matplotlib/../../../libstdc++.so.6 | grep CXXABI
輸出如下:
已經有了問題中所說的CXXABI_1.3.11。
測試一下。匯入已正常: