1、python里import tensorflow时报 “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 升级

GLIBC 升级 

安装包,自己编译 

由于centos6.5以下版本glibc最高为2.12,如果想要升级,必须自己下载源码,编译升级,但是从官网上下载的安装包,需要一些其他的关联包,安装麻烦,且不利于其他机器的部署。 

rpm安装 

从网上下载glibc-2.15.rpm,以及其他相关的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 

这个包能找到就下,找不到就不用安装了。 

[下载好放到了nb01-sys-gpu-kongming13.nb01.baidu.com:/root/softwares/glibc217.tar] 


nscd-2.12-1.192.el6.x86_64.rpm 

在使用rpm安装时,需要忽略包的关联性,否则无法正常安装。 

rpm -Uvh --nodeps *2.17-55.el6.x86_64.rpm --force 

安装好后,ldconfig 

检查ll /lib64/libc.* 

此时可以看到glibc.so.6 已经指向了2.17.so 

注意 

在安装glibc时,一定注意备份,因为一旦出错,整个系统就会挂掉。 



libstdc++.so.6

ImportError: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.19' not found 

Kongming 机器:  

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时报 “ImportError: /usr/local/python27/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so: undefined symbol: PyUnicodeUCS4_FromString”

 

如果自己单独升级了python,或者有多个版本的python时,便有可能出现此问题.
问题表象为:报错:undefined symbol: PyUnicodeUCS2_AsUTF8String或者undefined symbol: PyUnicodeUCS4_AsUTF8String.
根本原因时python和某个你用的库编译时指定的UCS编码方式不对.
编译python时,可以通过指定--enable-unicode[=ucs[24]]来选择使用UCS2或者UCS4.
如果你的错误是undefined symbol: PyUnicodeUCS2_AsUTF8String,说明你的python编译时使用的是UCS4,反之依然.
解决方案两个:1,重新编译python,2,重新编译库.
选择一般是重新编译库.
我这重新编译python,因为报错是PyUnicodeUCS4_FromString,说明tensorflow是用UCS4编译的,而python是UCS2编译的:  
重新编译时设置unicode为ucs4
./configure --prefix=/usr/local/python27 --enable-unicode=ucs4
python2.7.11默认是使用UCS2.

3. 
ImportError: No module named Tkinter
https://www.douban.com/note/524197380/