温馨提示×

如何更新CentOS中的Python版本

小樊
40
2025-12-13 19:42:11
栏目: 编程语言

在 CentOS 中更新 Python 的安全做法

CentOS 上更新 Python 推荐在不替换系统自带解释器的前提下进行,优先使用 SCLEPEL 仓库或 pyenv 来管理多个版本;若从源码编译,务必使用 make altinstall 避免覆盖系统 /usr/bin/python。系统工具(如 yum/dnf)可能依赖旧版 Python,直接替换可能引发故障。

方法一 使用 SCL Software Collections(不改系统默认 Python)

  • 适用于 CentOS 7/8,可在不影响系统 Python 的情况下启用新版本。
  • 步骤:
    1. 安装 SCL 源并启用所需版本(示例为 rh-python38) sudo yum install -y centos-release-scl sudo yum install -y rh-python38
    2. 启动一个启用该版本的新 shell scl enable rh-python38 bash
    3. 验证 python --version which python
  • 说明:退出该 shell 后恢复系统默认环境;如需持久化,可在用户的登录脚本中按需启用 SCL。

方法二 使用 EPEL 与 DNF/YUM 安装较新 Python 3(系统仓库)

  • 适用于希望用系统包管理器快速获得较新 Python 3 的场景(版本通常较官方最新版保守)。
  • 步骤(以 CentOS 7/8 为例):
    1. 启用 EPEL sudo yum install -y epel-release # CentOS 7 sudo dnf install -y epel-release # CentOS 8
    2. 安装具体版本(示例为 python39;不同版本包名可能不同) sudo dnf install -y python39 # 或 python38/python310 等
    3. 验证 python3.9 --version
  • 说明:这是官方仓库提供的版本,稳定性优先;若需最新特性,请考虑 SCL 或源码/pyenv。

方法三 从源码编译安装指定版本(精确控制,推荐 altinstall)

  • 适用于需要特定 Python 版本或自定义构建参数的场景。
  • 步骤:
    1. 安装编译依赖 sudo yum groupinstall -y “Development Tools” sudo yum install -y openssl-devel bzip2-devel libffi-devel wget
    2. 下载并编译(示例 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 ./configure --enable-optimizations make -j$(nproc) sudo make altinstall
    3. 验证 python3.10 --version
  • 说明:使用 make altinstall 可避免覆盖 /usr/bin/python3;如需设为默认,请用 alternatives 或仅在虚拟环境中使用。

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

  • 在同一台机器上安装、切换多个 Python 版本,互不干扰。
  • 步骤:
    1. 安装依赖 sudo yum install -y git gcc zlib-devel bzip2 bzip2-devel readline-devel
      sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel findutils
    2. 安装 pyenv curl https://pyenv.run | bash
    3. 配置 shell(写入 ~/.bashrc 或 ~/.zshrc) echo ‘export PYENV_ROOT=“$HOME/.pyenv”’ >> ~/.bashrc echo ‘export PATH=“$PYENV_ROOT/bin:$PATH”’ >> ~/.bashrc echo ‘eval “$(pyenv init --path)”’ >> ~/.bashrc echo ‘eval “$(pyenv init -)”’ >> ~/.bashrc source ~/.bashrc
    4. 安装与切换 pyenv install 3.10.12 pyenv global 3.10.12 # 全局 pyenv local 3.9.18 # 仅当前项目目录
  • 说明:pyenv 提供 global/local/shell 三级切换,便于开发与测试。

多版本切换与虚拟环境最佳实践

  • 使用 alternatives 切换 python3(示例) sudo alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1 sudo alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.10 2 sudo alternatives --config python3
  • 使用 venv 隔离项目依赖(强烈推荐) python3.10 -m venv myenv source myenv/bin/activate pip install --upgrade pip pip install -r requirements.txt
  • 迁移现有项目 pip freeze > requirements.txt

    在新环境中

    pip install -r requirements.txt
  • 提示:避免修改 /usr/bin/python 的指向;涉及系统工具时,优先使用 SCL 或在虚拟环境中工作。

0