杰瑞科技汇

centos 7 python 版本

这是一个非常重要且常见的问题,因为 CentOS 7 自带的 Python 版本非常老旧,而现代应用和开发工作通常需要更新的 Python 版本。

centos 7 python 版本-图1
(图片来源网络,侵删)

  1. 系统自带 Python:CentOS 7 默认安装的是 Python 2.7.5,这个版本是系统工具(如 yum)依赖的,强烈建议不要删除或升级它
  2. Python 3 的缺失:默认情况下,CentOS 7 的官方仓库中不包含 Python 3,你需要通过其他方式来安装。
  3. 最佳实践:推荐使用 pyenvSCL (Software Collections) 来安装和管理多个 Python 版本,而不是直接替换系统 Python,这样可以避免破坏系统稳定性。

检查当前 Python 版本

我们来检查一下系统当前自带的 Python 版本。

打开终端,执行以下命令:

# 检查 Python 2 版本
python --version
# 或者
python2 --version

预期输出:

Python 2.7.5
# 检查 Python 3 版本(大概率不存在)
python3 --version

预期输出:

centos 7 python 版本-图2
(图片来源网络,侵删)
bash: python3: command not found

这证实了 CentOS 7 默认只安装了 Python 2.7.5,并且没有 Python 3。


为什么不要升级或删除系统自带的 Python 2.7.5?

许多系统级的工具和脚本(特别是软件包管理器 yum)是用 Python 2 编写的,如果你升级了系统自带的 Python,可能会导致这些工具无法正常工作,从而破坏系统的稳定性,甚至让你无法再安装或更新软件。

黄金法则: 系统自带的 Python 用于维护系统,你自己的项目和开发应该使用其他版本。


在 CentOS 7 上安装 Python 3 的几种方法

这里介绍三种最主流和推荐的方法,你可以根据自己的需求选择。

使用 EPEL 仓库安装 (最简单,但版本可能较旧)

EPEL (Extra Packages for Enterprise Linux) 是一个为 RHEL 和 CentOS 等系统提供高质量额外软件包的项目,它提供了一个 Python 3.6 的包。

步骤:

  1. 安装 EPEL 仓库

    sudo yum install -y epel-release
  2. 安装 Python 3

    sudo yum install -y python36
  3. 验证安装

    python3.6 --version

    预期输出:

    Python 3.6.8

优点

  • 非常简单,一条命令即可。
  • yum 管理,与其他系统集成度高。

缺点

  • 版本非常老旧(3.6.8),很多现代库需要更新的 Python 版本。
  • 无法方便地在多个 Python 版本之间切换。

使用 SCL (Software Collections) (官方推荐,版本较新)

SCL 是 CentOS 官方提供的一种安装和使用多个软件版本的方式,而不会影响系统的默认版本,它提供了更新的 Python 3.6、3.8 和 3.9 版本。

步骤:

  1. 安装 SCL 包

    sudo yum install -y centos-release-scl
  2. 安装你想要的 Python 版本 这里我们安装 rh-python38 (Python 3.8) 作为示例。

    sudo yum install -y rh-python38
  3. 使用 Python SCL 安装的软件不会自动进入你的环境,你需要使用 scl 命令来启用它。

    # 启用 rh-python38 环境
    scl enable rh-python38 bash

    执行后,你的当前终端会进入一个新的 Shell 环境,python3 命令指向 Python 3.8。

  4. 验证安装

    python3 --version

    预期输出:

    Python 3.8.16
  5. 永久设置环境变量 (可选) 如果想让 python3 命令在登录时自动可用,可以修改你的 shell 配置文件(如 ~/.bashrc)。

    echo 'source /opt/rh/rh-python38/enable' >> ~/.bashrc
    # 然后重新加载配置
    source ~/.bashrc

    注意:这样做可能会让某些依赖系统 Python 2 的脚本感到困惑,请谨慎使用。

优点

  • 官方支持,稳定可靠。
  • 可以安装多个版本(如 rh-python36, rh-python38)并方便切换。
  • 不会影响系统 Python。

缺点

  • 需要手动 scl enable 来激活环境,对新手可能有点不直观。

使用 pyenv (最灵活,开发者首选)

pyenv 是一个强大的 Python 版本管理工具,它允许你在同一台机器上安装、切换和隔离多个 Python 版本,这是最灵活、最受开发者欢迎的方法。

步骤:

  1. 安装 pyenv 的依赖项

    sudo yum install -y git gcc make patch openssl-devel zlib-devel readline-devel sqlite-devel bzip2-devel libffi-devel
  2. 安装 pyenv 使用 curl 安装是最简单的方式。

    curl https://pyenv.run | bash
  3. 配置 Shell 环境 pyenv 的安装脚本会告诉你如何配置你的 Shell,通常需要将以下几行添加到你的 ~/.bashrc 文件末尾:

    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
    echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
    echo 'eval "$(pyenv init -)"' >> ~/.bashrc

    然后重新加载配置文件使生效:

    exec "$SHELL"

    或者

    source ~/.bashrc
  4. 安装 Python 3 现在你可以使用 pyenv 安装任何你想要的 Python 版本,安装最新的 Python 3.11:

    # 列出所有可安装的版本
    pyenv install --list
    # 安装一个特定版本,3.9.18
    pyenv install 3.9.18
  5. 选择并使用 Python 版本

    # 查看当前已安装的版本
    pyenv versions
    # 输出:
    # * system (set by /home/user/.pyenv/version)
    #   3.9.18
    # 为当前 Shell 设置全局 Python 版本
    pyenv global 3.9.18
    # 验证
    python --version
    # 输出:
    # Python 3.9.18
    # 你也可以为某个项目目录设置局部版本
    cd /path/to/your/project
    pyenv local 3.8.16
    # 这样,只要在这个目录下,python 命令就会指向 3.8.16

优点

  • 极度灵活:可以安装和切换任意 Python 版本。
  • 环境隔离:可以为每个项目创建独立的虚拟环境。
  • 开发者友好:是现代 Python 开发的标准工具之一。

缺点

  • 安装过程比前两种方法复杂。
  • 占用更多磁盘空间,因为每个版本都是完整安装的。

总结与推荐

方法 优点 缺点 推荐场景
EPEL 仓库 最简单,yum 管理 版本老旧,无法切换 快速临时使用,不关心版本
SCL (官方) 官方支持,稳定,可多版本 需要手动启用环境 追求稳定,需要官方支持,不希望安装过多工具
pyenv 最灵活,环境隔离,版本齐全 安装复杂,占用空间多 强烈推荐给所有开发者,尤其是需要管理多个项目或频繁切换版本的人

对于绝大多数用户,特别是开发者,强烈推荐使用 pyenv,它提供了最现代、最灵活的 Python 管理体验,是解决 CentOS 7 Python 版本问题的最佳方案,如果你只是想快速用一下 Python 3 且不介意版本,EPEL 是最快捷的选择,SCL 则是一个很好的折中方案,介于官方支持和灵活性之间。

分享:
扫描分享到社交APP
上一篇
下一篇