ImportError: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by /usr/local/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so)”
glibc 升級(jí)
GLIBC 升級(jí)
安裝包,自己編譯
由于centos6.5以下版本glibc最高為2.12,如果想要升級(jí),必須自己下載源碼,編譯升級(jí),但是從官網(wǎng)上下載的安裝包,需要一些其他的關(guān)聯(lián)包,安裝麻煩,且不利于其他機(jī)器的部署。
rpm安裝
從網(wǎng)上下載glibc-2.15.rpm,以及其他相關(guān)的glib安裝包,
glibc-common-2.15-60.el6.x86_64.rpm
glibc-devel-2.15-60.el6.x86_64.rpm
glibc-2.15-60.el6.x86_64.rpm
glibc-headers-2.17-60.el6.x86_64.rpm
這個(gè)包能找到就下,找不到就不用安裝了。
[下載好放到了nb01-sys-gpu-kongming13.nb01.baidu.com:/root/softwares/glibc217.tar]
nscd-2.12-1.192.el6.x86_64.rpm
在使用rpm安裝時(shí),需要忽略包的關(guān)聯(lián)性,否則無(wú)法正常安裝。
rpm -Uvh --nodeps *2.17-55.el6.x86_64.rpm --force
安裝好后,ldconfig
檢查ll /lib64/libc.*
此時(shí)可以看到glibc.so.6 已經(jīng)指向了2.17.so
注意
在安裝glibc時(shí),一定注意備份,因?yàn)橐坏┏鲥e(cuò),整個(gè)系統(tǒng)就會(huì)掛掉。
libstdc++.so.6
ImportError: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.19' not found
Kongming 機(jī)器:
export LD_PRELOAD=/home/opt/gcc-4.8.2.bpkg-r2/gcc-4.8.2.bpkg-r2/lib64/libstdc++.so.6
2. python里import tensorflow時(shí)報(bào) “ImportError: /usr/local/python27/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so: undefined symbol: PyUnicodeUCS4_FromString”
如果自己?jiǎn)为?dú)升級(jí)了python,或者有多個(gè)版本的python時(shí),便有可能出現(xiàn)此問(wèn)題.
問(wèn)題表象為:報(bào)錯(cuò):undefined symbol: PyUnicodeUCS2_AsUTF8String或者undefined symbol: PyUnicodeUCS4_AsUTF8String.
根本原因時(shí)python和某個(gè)你用的庫(kù)編譯時(shí)指定的UCS編碼方式不對(duì).
編譯python時(shí),可以通過(guò)指定--enable-unicode[=ucs[24]]來(lái)選擇使用UCS2或者UCS4.
如果你的錯(cuò)誤是undefined symbol: PyUnicodeUCS2_AsUTF8String,說(shuō)明你的python編譯時(shí)使用的是UCS4,反之依然.
解決方案兩個(gè):1,重新編譯python,2,重新編譯庫(kù).
選擇一般是重新編譯庫(kù).
我這重新編譯python,因?yàn)閳?bào)錯(cuò)是PyUnicodeUCS4_FromString,說(shuō)明tensorflow是用UCS4編譯的,而python是UCS2編譯的:
重新編譯時(shí)設(shè)置unicode為ucs4
./configure --prefix=/usr/local/python27 --enable-unicode=ucs4
python2.7.11默認(rèn)是使用UCS2.
3. ImportError: No module named Tkinter