Python 在CentOS6下由 2.7 升级到 3.6


升级原因

由于公司内部的服务器使用CentOS6.6,默认的python版本是Python 2.7.14,自己所学习的事Python3,所以想要升级到学习版本。
我在网上看了一些文章,由于很多基本的命令、软件包都依赖旧版本,比如:yum。
所以,在更新 Python 时,建议不要删除旧版本(新旧版本可以共存)。

安装配置

  • 在服务器下载新版本

    1
    wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
  • 解压缩

    1
    tar -zxvf Python-3.6.9.tgz
  • 安装配置

    1
    2
    3
    4
    cd Python-3.6.9 
    ./configure
    # 如果执行报错:configure: error: no acceptable C compiler found in $PATH
    # 说明没有安装合适的编译器,这时,需要安装/升级 gcc 及其它依赖包: gcc yum install make gcc gcc-c++
  • 编译 & 安装

    1
    2
    make
    make install
  • 验证

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    [root@localhost Python-3.6.9]# python
    Python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56)
    [GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    [root@localhost Python-3.6.9]# python3
    Python 3.6.9 (default, Jul 11 2019, 09:22:29)
    [GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>>


    [root@localhost bin]# ls -l /usr/local/bin/python3*
    lrwxrwxrwx. 1 root root 9 Jul 11 09:24 /usr/local/bin/python3 -> python3.6
    -rwxr-xr-x. 2 root root 10030878 Jul 11 09:23 /usr/local/bin/python3.6
    lrwxrwxrwx. 1 root root 17 Jul 11 09:24 /usr/local/bin/python3.6-config -> python3.6m-config
    -rwxr-xr-x. 2 root root 10030878 Jul 11 09:23 /usr/local/bin/python3.6m
    -rwxr-xr-x. 1 root root 3083 Jul 11 09:24 /usr/local/bin/python3.6m-config
    lrwxrwxrwx. 1 root root 16 Jul 11 09:24 /usr/local/bin/python3-config -> python3.6-config

设置 3.x 为默认版本

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

    1
    2
    3
    4
    [root@localhost bin]# ls -l /usr/bin/python*
    -rwxr-xr-x. 2 root root 9032 Jul 24 2015 /usr/bin/python
    lrwxrwxrwx. 1 root root 6 Aug 20 2018 /usr/bin/python2 -> python
    -rwxr-xr-x. 2 root root 9032 Jul 24 2015 /usr/bin/python2.7
  • 将原来 python 的软链接重命名:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    [root@localhost bin]# mv /usr/bin/python /usr/bin/python.bak

    [root@localhost bin]# ls -l /usr/bin/python*
    lrwxrwxrwx. 1 root root 6 Aug 20 2018 /usr/bin/python2 -> python
    -rwxr-xr-x. 2 root root 9032 Jul 24 2015 /usr/bin/python2.6
    -rwxr-xr-x. 2 root root 9032 Jul 24 2015 /usr/bin/python.bak

    [root@localhost bin]# ln -s /usr/local/bin/python3 /usr/bin/python
    [root@localhost bin]# ls -l /usr/bin/python*
    lrwxrwxrwx. 1 root root 22 Jul 11 09:43 /usr/bin/python -> /usr/local/bin/python3
    lrwxrwxrwx. 1 root root 6 Aug 20 2018 /usr/bin/python2 -> python
    -rwxr-xr-x. 2 root root 9032 Jul 24 2015 /usr/bin/python2.6
    -rwxr-xr-x. 2 root root 9032 Jul 24 2015 /usr/bin/python.bak

    [root@localhost bin]# python -V
    Python 3.6.9

配置 yum

  • 升级 Python 之后,由于将默认的 python 指向了 python3,yum 不能正常使用,需要编辑 yum 的配置文件:
    1
    2
    3
    vim /usr/bin/yum
    vim /usr/libexec/urlgrabber-ext-down # CentOS6.8 没找到这个文件
    #!/usr/bin/python 改为 #!/usr/bin/python2.7,保存退出即可。