Update Python

Python升级

环境: 操作系统python版本较低,如CentOS6.5自带python版本为2.6,无法通过yum进行升级安装,所以需要手动源码编译python升级(python2.6 => python2.7)

Python官网找到相应的python版本源码,下载到本地:

wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz

解压并进入目录:

cd Python-2.7.12 ; ./configure

编译的时候,会出现一些提示信息,Python build finished, but the necessary bits to build these modules were not found:xxx,也就是系统没有办法找到对应的模块信息,需要我们提前安装依赖包,对应列表如下:

模块 依赖 说明
_bsddb bsddb Interface to Berkeley DB library。Berkeley数据库的接口
_curses ncurses Terminal handling for character-cell displays。
_curses_panel ncurses A panel stack extension for curses。
_sqlite3 sqlite DB-API 2.0 interface for SQLite databases。SqlLite,CentOS可以安装sqlite-devel
_ssl openssl-devel.i686 TLS/SSL wrapper for socket objects。
_tkinter N/A a thin object-oriented layer on top of Tcl/Tk。如果不使用桌面程序可以忽略TKinter
bsddb185 old bsddb module 老的bsddb模块,可忽略。
bz2 bzip2-devel.i686 Compression compatible with bzip2。bzip2-devel
dbm bsddb Simple “database” interface。
dl N/A Call C functions in shared objects.Python2.6开始,已经弃用。
gdbm gdbm-devel.i686 GNU’s reinterpretation of dbm
imageop N/A Manipulate raw image data。已经弃用。
readline readline-devel GNU readline interface
sunaudiodev N/A Access to Sun audio hardware。这个是针对Sun平台的,CentOS下可以忽略
zlib Zlib Compression compatible with gzip

安装依赖包:yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel

make; make install

python 2.7.12 二进制文件被安装到/usr/local/bin下,为了使用,我们还改变系统python的链接,先备份后链接:

cp /usr/bin/python /usr/bin/python-2.6.6; rm /usr/bin/python; ln -s /usr/local/bin/python /usr/bin/python

通过/usr/bin/python -V; python -V可查看我们刚安装的新版本。

升级python后,使用yum时,会出现问题,修改/usr/bin/yum文件首行的"#!/usr/bin/python"为"#!/usr/bin/python2.6"即可

使用python2.7.12后,安装的python包,会被自动安装到/usr/local/lib/python2.7/site-packages目录下