一般情况不要随便修改默认 python,因为系统很多东西依赖 python 例如 yum
流程
- 编译安装
- 配置环境变量
编译安装
首先下载源 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
的环境了