Linux Python 升级 2.7
创建日期:2014-08-28 18:26 修改日期:2016-08-25 02:04:22

一般情况不要随便修改默认 python,因为系统很多东西依赖 python 例如 yum

流程

  1. 编译安装
  2. 配置环境变量

编译安装

首先下载源 tar 包

下载

wget http://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz

解压

tar -zxvf Python-2.7.8.tgz

进入解压缩后的文件夹

cd Python-2.7.8

在编译前先在 /usr/lib 建一个文件夹 python2.7.8(作为python的安装路径,以免覆盖老的版本)

mkdir /usr/lib/python2.7.8/

在解压缩后的目录下编译安装

./configure --prefix=/usr/lib/python2.7.8
make
make install

此时没有覆盖老版本,再将原来 /usr/bin/python 链接改为别的名字

mv /usr/bin/python /usr/bin/python_old

再建立新版本python的链接

ln -s /usr/lib/python2.7.8/bin/python2.7 /usr/bin/python

这个时候输入

python -V

就会显示出 python 的新版本信息

Python 2.7.8

注意: 升级 Python 2.7 导致使用 pip 等命令安装模块失败

报错如下:

$ pip

Traceback(most recent call last):
File"/usr/bin/pip",line5,in<module>
from pkg_resources import load_entry_point
ImportError:No module named pkg_resources

其实发生这个问题是因为:虽然你已经把 Python 升级到了 2.7 版本,但是 pip 仍然是原来的,版本,仍然在原来 python 的 site-package 里面

Debian 6 环境下,默认是 python2.6,site-package 在

/usr/lib/python2.6/site-packages/

很多模块都被安装在这里。直接打 pip,还是使用的原来的 pip。所以我们的思路就是:应该在新的 Python 中安装 pip,这样才不会报错。

$ curl -O http://python-distribute.org/distribute_setup.py
$ /usr/lib/python2.7.8/bin/python distribute_setup.py

使用新版本的 python 来运行这个脚本,这个会自动安装出来一个 easy_install,然后使用这个新的 easy_install 来安装 pip 就可以了!

$ /usr/lib/python2.7.8/bin/easy_install pip
$ /usr/lib/python2.7.8/pip -V

pip1.4.1 from /usr/lib/python2.7.8/lib/python2.7/site-packages/pip-1.4.1-py2.7.egg(python2.7)

安装生成的所有二进制文件,都是在你的 PYTHON_HOME/bin/ ,因为我的是安装在 /usr/lib/python2.7.8/ ,所以命令都在这里,以后再调用 pip 要使用绝对路径,或者做链接

ln -s /usr/bin/pip /usr/local/python/bin/pip

2.7 的模块是在以下目录

/usr/lib/python2.7.8/lib/python2.7/site-packages/

配置环境变量

添加环境变量主要是在 /etc/profile

例如,在 /usr/local/ 下安装了 python2.7
因为系统默认是 2.4,所以

$ python -V

Python 2.4.3 

进入 python2.7 的安装路径,在 /bin 下找到 python 文件

$ ./python -V

Python 2.7.8

先查看下目前的环境变量

$ echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

默认是没有最新的 python2.7

我进入新装的 python2.7 目录查看

/usr/local/python/bin/python2.7

这个就是 python2.7 的启动文件

$ PATH=$PATH:/usr/local/python/bin/
$ echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/python/bin/

将新装的 /usr/local/python/bin 添加到环境变量中

这时当我们输入

$ python2.7 -V

Python 2.7.8

因为系统会自动在环境中找寻 python2.7 这个文件并启动,但会优先找/usr/bin 下的启动文件,所以当 $ python 时,还是会进入 2.4 版本的 Python 的环境

进入 /usr/bin,将 python 删除,建立连接

ln -s /usr/local/python/bin/python ./python

这样我们 $ python 的时候,就会直接进入 2.7 的环境了