杰瑞科技汇

CentOS如何升级Python到2.7版本?

不要直接覆盖系统自带的 Python 2.7!

CentOS如何升级Python到2.7版本?-图1
(图片来源网络,侵删)

最好的方法是安装一个独立的 Python 版本,并将其配置为 python2.7 命令,同时保留系统自带的 Python 2.7 不受影响。

以下是推荐的详细步骤,我们将安装 Python 2.7.18(Python 2.7 的最后一个稳定版本)。


使用源码编译安装(推荐)

这种方法最灵活,可以安装到指定目录,不影响系统环境。

第 1 步:安装编译所需的依赖包

在编译 Python 之前,需要安装一些开发工具和库。

CentOS如何升级Python到2.7版本?-图2
(图片来源网络,侵删)
# 更新系统软件包
sudo yum update -y
# 安装编译工具和依赖库
sudo yum groupinstall "Development Tools" -y
sudo yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel libffi-devel -y

第 2 步:下载 Python 2.7.18 源码

从 Python 官方网站下载源码包。

# 创建一个临时目录来存放源码
cd /tmp
# 下载 Python 2.7.18 的源码
wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz
# 解压
tar -xzf Python-2.7.18.tgz
cd Python-2.7.18

第 3 步:配置、编译和安装

这是最关键的一步,我们将 Python 安装到 /usr/local/python2.7 目录下,并确保它不会覆盖系统命令。

# 配置安装路径和选项
# --prefix: 指定安装目录
# --enable-optimizations: 启用优化,生成更快的二进制文件
./configure --prefix=/usr/local/python2.7 --enable-optimizations
# 编译 (这个过程可能需要几分钟)
make -j$(nproc)
# 安装
sudo make altinstall

注意:

  • 使用 make altinstall 而不是 make installaltinstall 会确保新安装的 Python 不会覆盖系统自带的 pythonpip 命令,而是会创建 python2.7pip2.7 等新命令。
  • -j$(nproc) 会使用所有可用的 CPU核心进行并行编译,可以大大加快速度。

第 4 步:创建软链接(可选但推荐)

为了方便使用,可以为 python2.7pip2.7 创建全局软链接。

CentOS如何升级Python到2.7版本?-图3
(图片来源网络,侵删)
# 创建 python2.7 的软链接
sudo ln -s /usr/local/python2.7/bin/python2.7 /usr/bin/python2.7
# 创建 pip2.7 的软链接
sudo ln -s /usr/local/python2.7/bin/pip2.7 /usr/bin/pip2.7

第 5 步:验证安装

你可以验证新安装的 Python 是否生效。

# 检查 python2.7 版本
python2.7 --version
# 应该输出 Python 2.7.18
# 检查 pip2.7 版本
pip2.7 --version
# 应该输出 pip 9.0.3 from ... (或类似版本)
# 检查系统默认的 python 是否未受影响
python --version
# 应该输出 Python 2.7.5 (或你系统自带的版本)

第 6 步:使用 pip 安装包

所有为 Python 2.7 安装的包都应该通过 pip2.7 来管理。

# 使用 pip2.7 升级自身
sudo pip2.7 install --upgrade pip
# 安装一个包,requests
pip2.7 install requests

使用第三方仓库(如 IUS)安装

如果你不想自己编译,可以使用 IUS (Inline with Upstream Stable) 仓库,IUS 提供了比 CentOS 官方仓库更新的软件包。

# 安装 EPEL 仓库(如果尚未安装)
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# 安装 IUS 仓库
sudo yum install -y https://repo.ius.io/ius-release-el7.rpm
# 安装 Python 2.7
sudo yum install -y python27u python27u-devel python27u-pip
# 验证安装
python2.7 --version
# 输出应该是 Python 2.7.18
# pip 命令通常是 pip2.7 或 pip2.7u
pip2.7 --version

优点:

  • 安装过程简单,无需编译。
  • 可以通过 yum 进行管理。

缺点:

  • 引入了第三方仓库,可能带来潜在的安全风险(需确保来源可信)。
  • yum 的集成可能不如源码安装干净。

重要提醒:如何处理 yum 的 Python 依赖问题

如果你在升级后运行 yum 时遇到类似 File "/usr/bin/yum", line 30, except KeyboardInterrupt:TypeError: 'str' object is not callable 的错误,这是因为某些 Python 包被 yum 使用,而你的环境变量或 alternatives 指向了错误的 Python。

解决方案 1:确保 yum 使用系统 Python

最简单的方法是强制 yum 使用系统自带的 Python。

# 编辑 yum 的 shebang 行
sudo vi /usr/bin/yum
# 将第一行从 #!/usr/bin/python 改为 #!/usr/bin/python2.7
# 保存并退出

解决方案 2:使用 alternatives 管理 Python(更优雅)

alternatives 是一个在 Linux 上管理多个同名命令的工具,非常适合这种情况。

  1. 将系统 Python 和新安装的 Python 注册到 alternatives

    # 首先确保系统 python 和 python2.7 都存在
    # 系统 python 通常是 /usr/bin/python
    # 我们安装的 python2.7 是 /usr/bin/python2.7
    # 为 python 命令创建一个选择列表
    sudo alternatives --install /usr/bin/python python /usr/bin/python2.7 1
    sudo alternatives --install /usr/bin/python python /usr/bin/python2.5 2 # 假设系统还有旧版
  2. 切换 python 命令指向

    # 查看当前可用的 python 选项
    sudo alternatives --display python
    # 手动切换到系统自带的 python (通常是 /usr/bin/python2.7)
    # 你需要知道系统 python 的确切路径
    # 对于 CentOS 7,系统 python 是 /usr/bin/python2.7
    sudo alternatives --set python /usr/bin/python2.7

    当你直接运行 python 命令时,它将指向系统自带的版本,yum 就可以正常工作了,而你的开发工作则始终使用 python2.7 命令。

步骤 关键操作 命令示例
准备环境 安装编译依赖 sudo yum groupinstall "Development Tools"
获取源码 下载并解压 Python wget ... && tar -xzf ...
编译安装 配置并安装到指定目录 ./configure --prefix=/usr/local/python2.7 && sudo make altinstall
验证 检查新版本是否生效 python2.7 --version
管理依赖 确保 yum 使用系统 Python sudo alternatives --set python /usr/bin/python2.7

最终建议: 对于生产环境,方法一(源码编译) 是最可控、最干净的方式,请务必遵循 make altinstall 的原则,并妥善处理 yum 的依赖问题,以避免系统不稳定。

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