centos6.4 升级python27引发的一系列问题以及解决方案

来源:互联网 发布:react.js控制 隐藏div 编辑:程序博客网 时间:2024/05/18 01:44

1. python内置format函数可以用来千分位格式化数值,如

>>>format(1234567)

1,234,567

>>>format(1234.45)

1,234.45

无奈python26不支持,没法,只能升到python27


2.升级到python27

yum install gcc gcc-c++

下载python27源码包,如python-2.7.5.tar.gz

tar -xzvf python-2.7.5.tar.gz

cd python-2.7.5

./configure --prefix=/usr/local/python27   #此一步务必记住不要覆盖掉centos6.4自带的python26,指定一个新的安装路径

make && make install

更改系统默认python指向

mv /usr/bin/python /usr/bin/python2.6.6.old  #备份自带python26

ln -s /usr/local/bin/python27 /usr/bin/python   # 将系统默认python指向新安装的python27

python -V 可看到Python 2.7.5


3.yum默认使用的python版本是2.6.6,现在系统指向了python27,所以yum命令会有问题,yum不能正常工作。解决如下:

#vi /usr/bin/yum

将文件头部的#!/usr/bin/python改为

#!/usr/bin/python2.6


4.升级到了python27,发现新的问题,其他依赖系统自带python26的软件,如中文输入法ibus不好使了,只能输入汉字,不能浮显备选项

比如输入“bir”,不能浮显出“1.比如  2.必然  3.逼人...”等备选项)

原因也简单,yum install "@Chinese Support"安装的ibus输入法是基于python26的(因为centos6.4系统内置python26),升级到python27后,

浮显备选项的函数不好使了。不能显示备选项,中文输入痛苦无比,还不如智能ABC。解决办法:

1.用自己安装的python27安装一个虚拟环境,激活并使用虚拟环境开发,部署代码

2.还原系统默认python指向,指向26,让其他软件工作正常


如果需要切换python26(内置)/27,其实很简单,更改系统默认python文件,软链接指向所需版本即可

由于easy_install   pip  virtualenv默认安装也是系统全局(System wide)的命令,也要随着python版本对应变化。如果没安装这几个,注释掉切换脚本中对应行。

附切换python26/python27脚本:

#!/bin/bash## switch python in (26, 27)### processname: switch_python.sh#case "$1" in    py27)        echo "Starting switch to python27"        ln -sf /usr/local/python27/bin/python /usr/bin/python        ln -sf /usr/local/python27/bin/easy_install /usr/bin/easy_install        ln -sf /usr/local/python27/bin/pip /usr/bin/pip        ln -sf /usr/local/python27/bin/virtualenv /usr/bin/virtualenv        echo "Success...already27."     ;;    py26)        echo "Starting switch to python26"        ln -sf /usr/bin/python2.6.6.old /usr/bin/python        ln -sf /usr/bin/easy_install-2.6 /usr/bin/easy_install        ln -sf /usr/bin/pip-2.6 /usr/bin/pip              ln -sf /usr/bin/virtualenv-2.6 /usr/bin/virtualenv        echo "Success...already26."      ;;    *)        echo "Usage: $0 {py26|py27}"         exit 1    ;;esac




0 0