python2.6.6升级python2.7.14

Centos 6.8系统镜像默认安装的 python 环境是 2.6.6,线上需求需要升级到 2.7.14 版本,网上找了相关资料,升级 python 版本比较容易,但 yum/pip 等命令的使用也会有问题,网上的资料是修改脚本 #!/usr/bin/python 的头文件,个人感觉麻烦,还是直接升级比较好,不用修改任何系统脚本。

一、环境下载

// 下载python2.7.14并安装
# wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz
# tar zxvf Python-2.7.14.tgz
# cd Python-2.7.14 
# ./configure
# make
# make install

// 验证
# which python
/usr/local/bin/python

# python -V
Python 2.7.14

安装过程出现了个小插曲,执行which python命令是指向 /usr/local/bin/python 地址的,但执行python进入的确是2.6.6老版本,此时执行 source /etc/profile 生效环境变量,python即可进入正确的环境

二、pip安装升级

安装urllib3报错,提示pip版本使用python2.6版本过低,不能安装。

# pip install urllib3
DEPRECATION: Python 2.6 is no longer supported by the Python core team, please upgrade your Python. A future version of pip will drop support for Python 2.6
Requirement already satisfied: urllib3 in /usr/lib/python2.6/site-packages
You are using pip version 9.0.1, however version 19.2.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

查看pip启动源码,发下脚本头部 #!/usr/bin/python 是使用系统自带的python命令。

# cat /usr/bin/pip
#!/usr/bin/python

# -*- coding: utf-8 -*-
import re
import sys

from pip import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

通过下面可以看出pip还是使用系统的命令,对应的python版本是2.6.6,加载的packages也是2.6.6的,所以无法安装urllib3。

# which python
/usr/local/bin/python

# which pip
/usr/bin/pip

# pip --version
pip 9.0.1 from /usr/lib/python2.6/site-packages (python 2.6)

网上的一些资料是将头部 #!/usr/bin/python 直接软链到 python2.7,对于pip可行,但yum之类的其他命令会失效,行之有效的办法是直接在python2.7目录下生效pip命令。

使用如下方式生效python2.7中的pip命令:

# which python    //python使用的是2.7.14
/usr/local/bin/python

# python -m pip    //pip在python2.7.14找不到
/usr/local/bin/python: No module named pip

其中,-m参数的解释:run library module as a script (terminates option list)

#  python -m ensurepip  # 生效pip命令
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-9.0.1 setuptools-28.8.0

# python -m pip   //pip生效了,根据帮助文档使用
Usage:   
  /usr/local/bin/python -m pip <command> [options]

# pip -V   //pip能正常加载python2.7的packages了
pip 9.0.1 from /usr/local/lib/python2.7/site-packages (python 2.7)

# pip install urllib3     #urllib3包也能正常安装了
Requirement already satisfied: urllib3 in /usr/local/lib/python2.7/site-packages
You are using pip version 9.0.1, however version 19.2.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

其他基于python2.6.6版本的命令升级到python2.7.14方法一致。

结束时,顺便讲一下pip版本的升级与降级。查看网上资料时,有文章说 python -m ensurepip 后直接升级即可使用pip。

# python -m pip install --upgrade pip
# pip -V
pip 19.2.2 from /usr/local/lib/python2.7/site-packages/pip (python 2.7)

后来发现pip其实没必要升级,于是考虑降级到默认版本,使用如下方式降级即可。

# python -m pip install pip==9.0.1     //降级到指定版本
# pip -V     //降级成功
pip 9.0.1 from /usr/local/lib/python2.7/site-packages (python 2.7)

【参考资料】

声明:该文章系转载,转载该文章的目的在于更广泛的传递信息,并不代表本网站赞同其观点,文章内容仅供参考。

本站是一个个人学习和交流平台,网站上部分文章为网站管理员和网友从相关媒体转载而来,并不用于任何商业目的,内容为作者个人观点, 并不代表本网站赞同其观点和对其真实性负责。

我们已经尽可能的对作者和来源进行了通告,但是可能由于能力有限或疏忽,导致作者和来源有误,亦可能您并不期望您的作品在我们的网站上发布。我们为这些问题向您致歉,如果您在我站上发现此类问题,请及时联系我们,我们将根据您的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。