每一个问题都是机会

CentOS7 Python2 升级 Python3

文章目录
  1. 一下载
  2. 编译
  3. 进行链接替换,生效python3.7
  4. yum 的影响

一下载

  1. 打开Python3官网:https://www.python.org/

  2. 下拉找到,下图下载位置,点击版本下载:

  3. 复制要安装的Python3下载地址,如:https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz

  4. 命令行执行(在你需要下载的目录)

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

`

编译

# 解压
tar xzvf Python-3.8.2.tgz

cd Python-3.8.2

#按个人喜好选择目录
mkdir /usr/local/python3

# python3 这里是一个坑,需要安装ssl的支持
# 使用--with-ssl参数,没有指定具体的SSL库路径,因此Python将使用系统默认的SSL库
# 使用--with-openssl参数指定了一个具体的OpenSSL库路径,这样可以确保Python编译时使用指定的OpenSSL版本
# ./configure --prefix=/usr/local/src/python3 --with-openssl=/usr/bin/openssl
./configure --prefix=/usr/local/python3 --with-ssl

make

make install

这一步可能遇到的问题:

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`

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

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

ModuleNotFoundError: No module named ‘_ctypes’

解决方案:

yum install libffi-devel -y

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

检查一下:

 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

要注意的是产生了:python3pip3.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

赞(5)
未经允许不得转载:技术好学屋 » CentOS7 Python2 升级 Python3
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址