严选品质
正规商家

CentOS7升级python2.7.5到python3.7以上版本

CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。

CentOS 7 中默认安装了 Python,但是版本是2.x的,由于2020年python2.x将停止更新,因此需要将版本升级至3.x。但由于python2.x是系统集成的,很多命令都是要基于python2.x,比如:yum。因此在更新 Python 时,建议新旧版本共存。

查看当前python版本

[root@centos home]# python -V
Python 2.7.5

下载

  1. 打开Python3官网:https://www.python.org/
  2. 下拉找到,下图下载位置,点击版本下载:
    CentOS7升级python2.7.5到python3.7以上版本
  3. 复制要安装的Python3下载地址,如:https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz
    CentOS7升级python2.7.5到python3.7以上版本
  4. 命令行执行(在你需要下载的目录)
    wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz

编译

  1. 解压 tar xzvf Python-3.8.2.tgz
  2. cd Python-3.8.2
  3. mkdir /usr/local/python3 #按个人喜好选择目录
  4. python3 这里是一个坑,需要安装ssl的支持./configure --prefix=/usr/local/python3 --with-ssl这一步可能遇到的问题:
    zipimport.ZipImportError: can't decompress data; zlib not available

    解决方法:

    yum -y install zlib*

    vi Modules/Setup

    #zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz 去掉这个注释

    make install 过程中会进行zlib相关的编译

    这一步还可能遇到的问题:

    ModuleNotFoundError: No module named '_ctypes'

    解决方案:

    yum install libffi-devel -y

    make install 过程中会进行 ctypes 的相关编译

  5. 检查一下: ls /usr/local/python3/bin
   2to3  2to3-3.8  easy_install-3.8  idle3  idle3.8  pip3  pip3.8  pydoc3  pydoc3.8  python3  python3.8  python3.8-config  python3-config

要注意的是产生了:python3 和 pip3.8

  1. 查看版本:/usr/local/python3/bin/python3 -V,应该显示 Python 3.8.2
  2. 运行:/usr/local/src/python3/bin/pip3 -V,应显示:pip 10.0.1 from /usr/local/src/python3/lib/python3.7/site-packages/pip (python 3.7)

进行链接替换,生效python3.7

  1. 执行 python -V 输出 Python 2.7.5
  2. 查找文件并显示命令路径(which是查找PATH路径下配置的文件) which python ,显示 /usr/bin/python
  3. 执行 pip -V 输出 pip 20.1 from /usr/lib/python2.7/site-packages/pip-20.1-py2.7.egg/pip (python 2.7)如显示 -bash: pip: command not found 运行 easy_install pip
  4. 执行 which pip 输出 /usr/bin/pip
  5. 链接替换:
    ln -s /usr/local/python3/bin/python3 /usr/bin/python -f
    ln -s /usr/local/python3/bin/pip3 /usr/bin/pip -f
  6. 检查执行:python -V 应显示 Python 3.8.2
  7. 执行:pip -V显示pip 19.2.3 from /usr/local/python3/lib/python3.8/site-packages/pip (python 3.8)
  8. 还需要补充一个 easy_install 的指向,要知道这个也是有版本区别的,在后续我们使用python3的时候,可能还需要用到,因此就需要进行链接切换:
    ln -s /usr/local/python3/bin/easy_install /usr/bin/easy_install -f

    实际上熟悉linux的同学知道这仅仅就是环境变量的切换,

    只是上面采用了覆盖python2的默认文件来实现这个python/pip/easy_install指向python3

    方法很多,例如将/usr/local/src/python3/bin的路径放在PATH的最前面,等等。

    结果一样,就看自己要怎么使用了。

yum 的影响

yum的脚本是基于python2.x的,因此,这里将系统变量进行了python3的修改,那么就应该对yum的脚本做python2.x的指定

vm /usr/bin/yum

#!/usr/bin/python2.7

除了yum脚本以外,还有:

vi /usr/libexec/urlgrabber-ext-down

同样是进行指定`python2.7

赞(0)
未经允许不得转载:主机推广 » CentOS7升级python2.7.5到python3.7以上版本