最近在Linode上弄Python、出现ValueError: zero length field name in format这样的错误;
翻看文档之后发现只要升级Python到2.7以上版本就能解决问题。
用 Pythno -V 看了一下目前Centos上的版本是2.6的。
CentOS6系列里面默认安装的都是Python2.6的版本
所以我们可能会出现这样的错误
ValueError: zero length field name in format
这个时候我们就需要把Pythno2.6升级到Python2.7以上的版本
升级Python
系统默认安装的Python是2.6.x的,我们需要升级到Python2.7,用wget命令从官方下载源文件,然后解压进行编译
1
2
3
|
wget https: //www .python.org /ftp/python/2 .7.13 /Python-2 .7.13. tar .xz unxz Python-2.7.13. tar .xz tar -vxf Python-2.7.13. tar |
执行完以上命令会解压得到Python-2.7.13这个文件夹,进入该目录并执行以下命令进行配置
./configure --enable-shared --enable-loadable-sqlite-extensions --with-zlib
执行
vim ./Modules/Setup
找到#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz去掉注释并保存,然后进行编译和安装
make && make install
安装好Python2.7之后我们需要先把Python2.6做个备份
执行以下命令,对Python2.6进行备份,然后为Python2.7创建软链接、把Python2.7作为默认Python来用
1
2
|
mv /usr/bin/python /usr/bin/python2 .6 ln -s /usr/local/bin/python2 .7 /usr/bin/python |
然后编辑/usr/bin/yum,将第一行的#!/usr/bin/python修改成#!/usr/bin/python2.6.6
现在执行yum命令已经不会出现之前的错误信息了。
我们执行python -V查看版本信息,如果出现错误
error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
编辑配置文件
vim /etc/ld.so.conf
查看是否有 /usr/local/lib,没有的话请添加一行、保存退出;
然后刷新配置
1
2
|
/sbin/ldconfig /sbin/ldconfig - v |
PS:如果你原来在python2.6环境中安装了Pip的话、是需要重新安装
PS2:如果你原来用pip install xxx 安装了第三方库的话也是需要重新安装的
原文链接:http://www.hiadmin.org/2017/07/09/centos-update-python/