python, 软件介绍

centos下python2.6升级为2.7

python目前主要存在两个版本python2和python3,python2的python2.7版本最为稳定、完善,在一些程序的性能上python2.6存在问题。

而centos操作系统默认安装的python版本为2.6,因此每次安装centos系统,我都会一开始就将python升级为2.7版本,这里记录下具体的操作。

1. 安装最新的稳定版本python2.7

前往python官网,进入download页面,在Python Source Releases分类中下载所需要的源码,文本以2.7.7版本为例。

由于需要使用sqlmap,所以需要安装sqllite。

root@localhost [~]# yum install sqlite-devel
root@localhost [~]# wget https://www.python.org/ftp/python/2.7.7/Python-2.7.7.tgz
root@localhost [~]# tar -zxvf Python-2.7.7.tgz
root@localhost [~]# cd Python-2.7.7
root@localhost [~]# ./configure --enable-loadable-sqlite-extensions
root@localhost [~]# make
root@localhost [~]# make install

默认情况下,python安装目录为/usr/local/bin/python2.7,可以直接运行该命令确认python2.7安装是否正常。

2. 修改python的默认值

虽然python2.7已经安装完成,但是我们直接输入python -V命令会发现,系统显示的依然是2.6版本。

因为,当前的python依旧指向的是2.6版本,我们需要对其进行修改。

#查看当前python的路径
root@localhost [~]# which python
/usr/local/bin/python
root@localhost [~]# cd /usr/local/bin/
#查看当前都有哪些python指令
root@localhost [~]# ll py*
-rwxr-xr-x  1 root root  578 Mar 26 17:23 pycallgraph
-rwxr-xr-x. 1 root root   78 Jan 22  2013 pydoc
lrwxrwxrwx. 1 root root    6 Aug 14  2013 python
lrwxrwxrwx. 1 root root    6 Aug 14  2013 python2 -> python
-rwxr-xr-x  2 root root 9032 Jan 22  2013 python2.6
#将原来的python重命名,以便新建python为2.7版本
root@localhost [~]# mv python python_old
#再次查看当前都有哪些python指令,会发现第三行闪动提示错误
#这是因为link指向了不存在的py
root@localhost [~]# ll py*
-rwxr-xr-x  1 root root  578 Mar 26 17:23 pycallgraph
-rwxr-xr-x. 1 root root   78 Jan 22  2013 pydoc
lrwxrwxrwx. 1 root root    6 Aug 14  2013 python2 -> python #此行有警告
-rwxr-xr-x  2 root root 9032 Jan 22  2013 python2.6
-rwxr-xr-x  2 root root 9032 Jan 22  2013 python_old
#修改指向
root@localhost [~]# rm -f python2
root@localhost [~]# ln -s python_old python2
#新建python3指向
ln -s /usr/local/bin/python2.7 ./python
#确认安装正常
root@localhost [~]# python -V
Python 2.7.7

现在,python默认版本更新到了版本2.7。

3. 修改yum源

由于yum使用的是python2.6版本,升级完以后会导致yum报错,我们需要将yum文件的配置进行修改:

#yum无法使用
root@localhost [~]# yum
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

   No module named yum
... ...
#修改yum的python指向python_old,保存
root@localhost [~]# vi /usr/bin/yum

#!/usr/bin/python_old
import sys
... ...

再次运行yum,一切正常。

4. 安装常用工具

对于pip等常用命令,我们需要重新安装。

root@localhost [~]# yum install python-setuptools
root@localhost [~]# easy_install pip

5. 异常处理

在切换新版本python的过程中,有个小插曲,easy_install安装完成后运行报错:

root@localhost [~]# easy_install
Traceback (most recent call last):
  File "/usr/bin/easy_install", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/bin/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/pkg_resources.py", line 2713, in <module>
    parse_requirements(__requires__), Environment()
  File "/usr/bin/lib/python2.7/site-packages/distribute-0.6.19-py2.7.egg/pkg_resources.py", line 584, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: distribute==0.6.15

错误说明,没有找到distribute,重新下载安装distribute,可以去官网下载

root@localhost [~]# wget http://pypi.python.org/packages/source/d/distribute/distribute-0.6.49.tar.gz
root@localhost [~]# tar -xzvf distribute-0.6.49.tar.gz
root@localhost [~]# cd distribute-0.6.49
root@localhost [~]# python setup.py install
#安装完成后查看文件路径
root@localhost [~]# which easy_install
/usr/bin/easy_install
#修改easy_install的配置,将所有distribute版本改为所安装的版本
root@localhost [~]# vi /usr/bin/easy_install
#保存后,确认easy_install运行正常
root@localhost [~]# easy_install --version
distribute 0.6.49

运行pip时候提示报错,通过升级可解决此问题:

root@localhost [~]# pip install pycallgraph

Traceback (most recent call last):  
File "/usr/local/bin/pip", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2675, in <module>
parse_requirements(__requires__), Environment()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 552, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: pip==0.8.1
root@localhost [~]# easy_install  --upgrade pip
#再次执行,即可正常
root@localhost [~]# pip install pycallgraph

吐槽,python的版本问题一直都是个挥不去的痛,希望未来最终可以统一吧。

Leave a Reply

黑ICP备15001596号