• Linux 升级 Python 至 3.x


    简述

    CentOS 7 中默认安装了 Python,版本比较低(2.7.5),为了使用新版 3.x,需要对旧版本进行升级。

    由于很多基本的命令、软件包都依赖旧版本,比如:yum。所以,在更新 Python 时,建议不要删除旧版本(新旧版本可以共存)。

    查看 Python 版本号

    当 Linux 上安装 Python 后(默认安装),只需要输入简单的命令,就可以查看 Python 的版本号:

    # python -V
    Python 2.7.5

    或者是:

    # python --version
    Python 2.7.5

    可以看出,系统自带的 Python 版本是 2.7.5。

    下载新版本

    进入 Python下载页面,选择需要的版本。

    这里,我选择的版本是 3.5.2 。

    # wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz

    这里写图片描述

    解压缩

    下载完成之后,进行解压缩:

    # tar -zxvf Python-3.5.2.tgz

    安装配置

    进入解压缩后的目录,安装配置:

    # cd Python-3.5.2/
    # ./configure 

    执行 ./configure 时,如果报错:

    configure: error: no acceptable C compiler found in $PATH

    说明没有安装合适的编译器。这时,需要安装/升级 gcc 及其它依赖包。

    # yum install make gcc gcc-c++ 

    完成之后,重新执行:

    # ./configure 

    这里写图片描述

    编译 & 安装

    配置完成之后,就可以编译了:

    # make 

    漫长的等待……完成后,安装:

    # make install 

    验证

    安装成功以后,就可以查看 Python 的版本了:

    # python -V
    Python 2.7.5
    # python3 -V
    Python 3.5.2

    一个是旧版本 2.x,另外一个是新版本 3.x。

    注意:在 /usr/local/bin/ 下有一个 python3 的链接,指向 bin 目录下的 python 3.5。

    设置 3.x 为默认版本

    查看 Python 的路径,在 /usr/bin 下面。可以看到 python 链接的是 python 2.7,所以,执行 python 就相当于执行 python 2.7。

    # ls -al /usr/bin | grep python
    -rwxr-xr-x.  1 root root      11216 121 2015 abrt-action-analyze-python
    lrwxrwxrwx.  1 root root          7 830 12:11 python -> python2
    lrwxrwxrwx.  1 root root          9 830 12:11 python2 -> python2.7
    -rwxr-xr-x.  1 root root       7136 1120 2015 python2.7

    将原来 python 的软链接重命名:

    # mv /usr/bin/python /usr/bin/python.bak

    将 python 链接至 python3:

    # ln -s /usr/local/bin/python3 /usr/bin/python

    这时,再查看 Python 的版本:

    # python -V
    Python 3.5.2

    输出的是 3.x,说明已经使用的是 python3了。

    配置 yum

    升级 Python 之后,由于将默认的 python 指向了 python3,yum 不能正常使用,需要编辑 yum 的配置文件:

    # vi /usr/bin/yum

    同时修改:

    # vi /usr/libexec/urlgrabber-ext-down

    将 #!/usr/bin/python 改为 #!/usr/bin/python2.7,保存退出即可。

  • 相关阅读:
    (转载)敏捷开发一千零一问系列之三十三:每天编码多少行?
    (转载)memcpy的几个实现版本
    (转载)HTTP URL
    (转载)C++lambda表达式
    (转载)程序员面试什么最重要?
    (转载)static全局变量与普通的全局变量有什么区别?
    (转载)【C++】new A和new A()的区别详解
    (转载)php如何判断IP为有效IP地址
    查看修复HDFS中丢失的块
    dfs.replication、dfs.replication.min/max及dfs.safemode.threshold.pct
  • 原文地址:https://www.cnblogs.com/itrena/p/5938347.html
Copyright © 2020-2023  润新知