1. 程式人生 > >【已解決】匯入tensorflow出現ImportError

【已解決】匯入tensorflow出現ImportError

原先在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。

測試一下。匯入已正常: