温馨提示×

如何更新 CentOS 上的 Python 版本

小樊
31
2025-12-17 18:57:06
栏目: 编程语言

在 CentOS 上更新 Python 的可选方案与步骤

一、前置检查与原则

  • 查看当前版本:python --versionpython3 --version
  • 原则:不要覆盖或替换系统自带的 /usr/bin/python(很多系统工具依赖它)。如需“默认使用新版本”,优先通过 alternatives 切换,或在用户级使用 pyenv,或采用 SCL 按需启用。
  • 建议始终在虚拟环境中开发与运行项目,避免影响系统包与脚本。

二、方法一 使用包管理器安装或升级 Python 3(推荐)

  • CentOS 7:
    • 启用 EPEL:sudo yum install -y epel-release
    • 安装 Python 3(按需选择版本包,如:python36、python38、python39):sudo yum install -y python39
    • 验证:python3 --versionpython3.9 --version
  • CentOS 8 / Stream 8:
    • 使用 DNF:sudo dnf install -y python3(或指定次版本包)
  • 设置默认 python3(可选,仍保留系统 python2/3 共存):
    • 查看/切换 alternatives:sudo alternatives --config python3(按提示选择新版本)
  • 说明:这是最省心的路径,依赖由仓库维护,适合大多数场景。

三、方法二 使用 SCL(Software Collections)在不替换系统 Python 的情况下启用新版本

  • 安装 SCL 源:sudo yum install -y centos-release-scl
  • 安装所需 Python 版本(示例为 rh-python38):sudo yum install -y rh-python38
  • 启用新版本(临时会话):scl enable rh-python38 bash
  • 验证:python --version(此时指向 SCL 提供的 Python 3.8)
  • 说明:SCL 将软件安装在独立前缀,通过 scl enable 进入对应环境,适合需要系统工具稳定、同时开发使用新版本的场景。

四、方法三 源码编译安装指定版本(可控但更复杂)

  • 安装编译依赖:sudo yum groupinstall -y "Development Tools"sudo yum install -y openssl-devel bzip2-devel libffi-devel zlib-devel
  • 下载与解压(示例 3.10.12):
    • cd /usr/src
    • sudo curl -O https://www.python.org/ftp/python/3.10.12/Python-3.10.12.tgz
    • sudo tar xzf Python-3.10.12.tgz && cd Python-3.10.12
  • 配置与编译安装(使用 altinstall 避免覆盖系统 python):
    • ./configure --enable-optimizations
    • make -j$(nproc)
    • sudo make altinstall
  • 验证:python3.10 --version
  • 可选:通过 alternatives 注册新版本(谨慎操作):
    • sudo alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.10 60
    • sudo alternatives --config python3
  • 说明:适合需要特定版本或自定义编译参数的用户。

五、方法四 使用 pyenv 管理多版本(开发推荐)

  • 安装依赖:sudo yum install -y git gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel
  • 安装 pyenv:curl https://pyenv.run | bash
  • 配置 Shell(写入 ~/.bashrc~/.zshrc):
    • export PYENV_ROOT="$HOME/.pyenv"
    • export PATH="$PYENV_ROOT/bin:$PATH"
    • eval "$(pyenv init --path)"
    • eval "$(pyenv init -)"
    • 重新加载:source ~/.bashrc
  • 安装与切换版本:
    • 列表:pyenv install --list
    • 安装:pyenv install 3.10.12
    • 全局/局部:pyenv global 3.10.12pyenv local 3.10.12
  • 验证:python --version
  • 说明:多版本并存、按项目切换、与系统解耦,开发体验最佳。

六、最佳实践与常见问题

  • 使用虚拟环境隔离依赖:
    • 系统或 pyenv 提供的解释器:python3.10 -m venv venv && source venv/bin/activate
    • 在 venv 中:pip install -U pip,然后用 requirements.txt 迁移依赖:pip freeze > requirements.txt;在新环境 pip install -r requirements.txt
  • 不要替换 /usr/bin/python;如需“默认 python3”,用 alternatives 切换 python3,或仅在用户会话中用 pyenv/SCL。
  • 升级后验证关键系统工具(如 yumdnffirewalld 等脚本)是否正常;必要时在脚本中显式使用 python3 路径。
  • 生产环境先在测试环境验证兼容性,逐步迁移关键服务。

0