环境:

  • CentOS: 6.x
  • Python: 2.6

CentOS 6中默认的python版本为2.6, 要安装2.7的话需要先安装compile环境。

yum groupinstall "Development tools"

安装时会出现以下错误

Error: Package: systemtap-devel-1.7-5.el6_3.1.x86_64 (updates)
           Requires: kernel-devel
Error: Package: glibc-headers-2.12-1.80.el6_3.6.x86_64 (updates)
           Requires: kernel-headers >= 2.2.1
Error: Package: glibc-headers-2.12-1.80.el6_3.6.x86_64 (updates)
           Requires: kernel-headers
 You could try using --skip-broken to work around the problem
** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows:
kernel-2.6.32-220.13.1.el6.x86_64 has missing requires of kernel-firmware >= ('0', '2.6.32', '220.13.1.el6')

解决方法:修改文件 sudo vi /etc/yum.conf , 将以下内容前加注释即可解决,

exclude=kernel*

此参数的意思是排除安装或更新kernel开头的软件,而我们安装开发工具包需要依赖 kernel相关的软件glibc-headers-2.12-1.80.el6_3.5.x86_64

除此之外还需要安装一些额外的包,不然在后来安装package的时候会有很多问题

yum install zlib-devel [115 K]
yum install bzip2-devel [412 K]
yum install openssl-devel [5.4 M]
yum install ncurses-devel

下载并编译python

curl -O http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.bz2
tar xf Python-2.7.3.tar.bz2
cd Python-2.7.3
./configure --prefix=/usr/local
make

编译完成后出现以下提示, 显示了python没有编译上的模块,只是警告,不是错

Python build finished, but the necessary bits to build these modules were not found:
_bsddb             _sqlite3           _tkinter        
bsddb185           dbm                dl              
gdbm               imageop            readline        
sunaudiodev                                           
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

如果有需要的话可以按需安装这些模块

  • readline: 安装后在命令行模式下实用python交互模式可以随意移动光标。 python的readline模块是GNU Readline Library的一个封装,Readline 软件包是一个提供命令行编辑和历史纪录功能的库集合。 如果没有readline模块的话,运行ipython就是这样,无法使用Tab键自动补全,无法使用命令历史功能来方便地进行程序的调试. 所以安装readline模块还是有需要的。

    yum install readline-devel
    
  • sqlite这个数据库的支持个人觉得大部分pythoner都是需要的。

    yum install sqlite-devel
    
  • dbm, gdbm可以安装一下库解决。 其作用参考 以下连接

最后剩下以下包不需要安装:

_bsddb             _tkinter           bsddb185        
dl                 imageop            sunaudiodev

说明如下:

  • bsddb我们基本上用不上。
  • _thinter服务器又不是图形界面,不需要
  • bsddb185已经没有文档了。
  • dl是对32位平台
  • imageop已经过期
  • sunaudiodev是对Sun平台的,

安装到指定的目录 make altinstall , 必须实用altinstall,如果只用install的话,会有两个不同版本的名字一样的python 最后2.7.3版本的python会安装在 /usr/local/bin/python2.7 , 而系统原来的2.6.6会在 /usr/bin/python/usr/bin/python2.6