> CentOS > CentOS教程 >

centos6.x 安装python2.7

CentOS的设计理念中有一点是:持久可用。要达到这个目的,CentOS的ABI、API必须是稳定且兼容的。这就造成了某些软件不可能随意地升级到最新版本。以Python为例,CentOS6.x中的Python版本一直就是2.6,无论现在的Python做了多少升级,引入了多少新包,加入了多少新功能,解决了多少Bug。

这样做当然有它的好处。例如企业可以一次投入,在整个系统的维护期内(10年)可以不需要因为兼容性问题而被动进行软件的升级。但是这样的策略也有它的弊端。例如无法使用更新的功能,更好的解决方案。

以Python来说,Python2.7引入了argprase这个命令行解析模块,在Python2.6中就只能用optprase这个模块。optpraser这个模块有一个问题,在使用PyInstaller制作可执行文件后,执行时显示不出中文字符。这或许也有PyInstaller的原因,但是往往第三方软件包的维护者只关心主流的版本,对于其它认为“非主流”的版本就没有投入太多的精力。要解决PyInstaller中文乱码的问题,最直接是还是安装Python2.7,使用argprase模块,然后使用相应版本的PyInstaller生成可执行文件。

那么,怎样在CentOS6.x上安装Python2.7呢?因为要保证“持久可用”,也就是说用Python2.6写的代码要一直能够正常地运行在系统中。CentOS并不提供(或者至少没有简单的,安全的方法)Python的直接升级。CentOS 的维护者当然也想到了需要对“特定情况”作出处理。所以给出“软件选集(SCL)”。
CentOS6.x提供了如下的软件选集:

* Ruby 1.9.3 (ruby193)
* Python 2.7 (python27)
* Python 3.3 (python33)
* PHP 5.4 (php54)
* Perl 5.16.3 (perl516)
* Node.js 0.10 (nodejs010)
* MariaDB 5.5 (mariadb55)
* MySQL 5.5 (mysql55)
* PostgreSQL 9.2 (postgresql92)
要安装这些高版本的软件,首先需要安装centos-release-SCL

yum install centos-release-SCL
然后安装所需的软件,以Python为例:

yum install python27
安装完成后,并不意味着系统中自带的Python2.6被升级到2.7版本,事实上,安装python27后对原有系统中的python2.6没有任何影响。因为python2.7是被安装到

/opt/rh/python27
中。要使用python2.7,需要执行:

scl enable python27 bash
它将使python2.7在当前的bash下可以使用。

接下来介绍如何使用pip安装Python的第三方软件包。
首先下载ez_setup.py:

wget http://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
在执行了”scl enable python27 bash“的终端中执行如下命令:

python ez_setup.py
easy_install-2.7 pip
然后就可以使用pip安装软件了。
这里要注意,每次关闭终端后,python都将变成系统自带的2.6版本。要使用2.7版本,需要重新执行:

scl enable python27 bash


(责任编辑:IT)