昔我往矣

CentOS6上Python升级到2.7版本

2015年07月14日

系统版本:

CentOS 6.6

默认情况下,CentOS6的Python版本是2.6,但是2.7可能是一个更常用的Python版本,当开发必须使用某些新特性和特性的时候。就可能需要升级Python版本!(做过更恶心的是把RHEL5上的Python2.4升级,满足Django要求)

步骤如下:

下载Python2.7的源码并安装
把python2.7安装到/usr/local目录下的原因是,CentOS6会依赖于旧的Python2.6版本,比如说yum,/usr/bin/yum文件的第一行指定解释器就是"#!/usr/bin/python",如果把新的Python2.7覆盖到/usr/bin/python,会导致yum报错。

# wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tar.xz
# tar xvf Python-2.7.10.tar.xz 
# cd Python-2.7.10
# ./configure --prefix=/usr/local
# make && make install && echo ok
# python -V
Python 2.7.10

从上面的最后一条命令可以看到,可以看到Python版本是2.7.10了,这里显示的版本号和环境变量中bin目录的先后顺序有关,这里是一种默认情况。

安装easy_install和pip
除了Python版本外,还经常需要使用easy_install和pip来安装Python的库。这次也一并升级:

# wget https://bootstrap.pypa.io/ez_setup.py -O - | python

# easy_install-2.6 --version 
distribute 0.6.10
# easy_install-2.7 --version
setuptools 18.0.1

从上面的返回可以看到新版本了,建议以easy_install-2.7的方法使用,避免版本乱掉!下面使用easy_install安装pip。

# easy_install-2.7 pip

# pip2.6 --version
pip 1.3.1 from /usr/lib/python2.6/site-packages (python 2.6)
# pip2.7 --version
pip 7.1.0 from /usr/local/lib/python2.7/site-packages/pip-7.1.0-py2.7.egg (python 2.7)

可以使用pip2.7来调用新安装的高版本pip!

解决两个常用的Python库依赖
安装两个高难度的Python库——thing和lxml做测试,看看能否正常使用pip2.7:

# pip2.7 install thing
...
mysql_config: command not found
...
# yum -y install mysql
# pip2.7 install things
...
    _mysql.c:44:23: 错误:my_config.h:没有那个文件或目录
...
# yum -y install mysql-devel
# pip2.7 install thing 

使用pip2.7安装上面的thing,需要依赖于mysql提供的mysql_config命令和mysql-devel提供的mysql_config.h等等头文件。最后安装成功了

再安装另一库:lxml

# pip install lxml
...
ERROR: /bin/sh: xslt-config: command not found
...
# yum -y install  libxslt-devel
# pip install lxml 

pip2.7安装lxml依赖于libxslt-devel提供的xslt-config命令,完成依赖之后,这个库也安装成功了!

注意:本文中解决依赖的办法仅适用于CentOS6,其它系统中未做测试,可能有所差异!

当前暂无评论 »

添加新评论 »