杰瑞科技汇

CentOS 7如何安装Python 2.7?

  • 强烈不推荐:在 2025 年,为任何生产环境安装 Python 2.7,它已于 2025 年 1 月 1 日停止官方支持,存在严重的安全漏洞和功能缺失。
  • 目的:如果您必须安装,通常是为了维护旧的、遗留的应用程序。
  • 最佳方式:使用 SCL (Software Collections) 或 IUS 仓库。强烈推荐使用 SCL,因为它不会与系统自带的 Python 3 冲突,并且可以方便地切换和管理。

使用 SCL (Software Collections) - 推荐

这是 CentOS/RHEL 官方推荐的、最安全、最不冲突的方式来安装多个版本的软件,它会将 Python 2.7 安装到一个独立的目录(如 /opt/rh/python27/),不会影响系统默认的 Python 3。

CentOS 7如何安装Python 2.7?-图1
(图片来源网络,侵删)

步骤 1: 启用 EPEL 仓库

SCL 的源通常在 EPEL (Extra Packages for Enterprise Linux) 仓库中,首先确保你的系统已经启用了 EPEL。

# 对于 CentOS 7
sudo yum install -y epel-release
# 对于 CentOS 8/Stream
sudo dnf install -y epel-release

步骤 2: 安装 SCL 和 Python 2.7

使用 yum (CentOS 7) 或 dnf (CentOS 8/Stream) 安装 python27 这个软件集合。

# 对于 CentOS 7
sudo yum install -y centos-release-scl
sudo yum install -y rh-python27
# 对于 CentOS 8/Stream
sudo dnf install -y python27
# 注意:在 CentOS 8/Stream 上,安装后需要手动启用

步骤 3: 使用 Python 2.7

安装完成后,Python 2.7 不会直接进入你的系统 PATH,你需要使用 scl 命令来启用它。

临时启用(当前终端会话有效)

CentOS 7如何安装Python 2.7?-图2
(图片来源网络,侵删)
# 启用 rh-python27 环境
scl enable rh-python27 bash
# 验证版本
python --version
# 输出应为 Python 2.7.x
# 验证 pip
pip --version
# 输出应为 pip 9.x 或更高版本(与 Python 2.7 捆绑的旧版本)

永久启用(为当前用户设置)

如果你希望每次登录都自动使用 Python 2.7,可以将 scl enable 命令添加到你的 shell 配置文件中。

# 编辑 .bashrc 文件
echo 'source /opt/rh/rh-python27/enable' >> ~/.bashrc
# 重新加载配置文件使生效
source ~/.bashrc
# 验证
python --version

如何退出 SCL 环境

如果你只是临时启用,想切换回系统默认的 Python 3,只需打开一个新的终端窗口即可。

CentOS 7如何安装Python 2.7?-图3
(图片来源网络,侵删)

使用 IUS 仓库

IUS (Inline with Upstream Stable) 提供了更新的软件包,包括 Python 2.7,这也是一个很好的选择,但 SCL 通常是更官方的推荐。

步骤 1: 安装 IUS 仓库

访问 IUS 官网 获取适合你 CentOS 版本的安装命令。

# 对于 CentOS 7
sudo yum install -y https://repo.ius.io/ius-release-el7.rpm
# 对于 CentOS 8
sudo dnf install -y https://repo.ius.io/ius-release-el8.rpm

步骤 2: 安装 Python 2.7 及相关工具

# 对于 CentOS 7
sudo yum install -y python27 python27-pip python27-devel python27-setuptools
# 对于 CentOS 8
sudo dnf install -y python27 python27-pip python27-devel python27-setuptools

步骤 3: 使用 Python 2.7

IUS 的安装方式会创建 python2.7pip2.7 这样的可执行文件,直接调用即可,不会覆盖 python 命令。

# 直接调用
python2.7 --version
pip2.7 --version

注意:这种方式下,python 命令通常仍然指向系统默认的 Python 3,pip 命令可能指向 pip3,这有助于避免混淆。


从源码编译安装(不推荐)

这是最灵活但也是最复杂、最容易出错的方式。仅当你需要非常特定的定制版本时才考虑此方法

步骤 1: 安装编译依赖

sudo yum groupinstall -y "Development Tools"
sudo yum install -y openssl-devel bzip2-devel zlib-devel libffi-devel

步骤 2: 下载 Python 2.7 源码

从 Python 官网下载最新的 2.7.x 版本源码(2.7.18)。

cd /usr/src
sudo wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz
sudo tar xzf Python-2.7.18.tgz

步骤 3: 编译和安装

cd Python-2.7.18
# 配置安装路径(推荐安装在 /usr/local/python2.7)
sudo ./configure --prefix=/usr/local/python2.7
# 编译(可能需要较长时间)
sudo make -j$(nproc)
# 安装
sudo make altinstall  # 使用 altinstall 而不是 install,避免覆盖系统 python 命令

步骤 4: 配置环境变量

为了让系统能找到你新安装的 Python,需要修改 PATH

# 编辑 .bashrc
echo 'export PATH=/usr/local/python2.7/bin:$PATH' >> ~/.bashrc
# 重新加载配置
source ~/.bashrc
# 验证
python --version
pip --version

安装 pip 和 setuptool

无论使用哪种方案,Python 2.7 通常自带 pip,但版本非常旧,建议升级到最新的 2.7 兼容版本。

# 在 SCL 或 IUS 环境下执行
python -m pip install --upgrade pip
python -m pip install --upgrade setuptools

重要注意事项

  1. 不要覆盖系统 Python:绝对不要使用 yum install pythonmake install,这会破坏你的 CentOS 系统,因为很多系统管理工具(如 yum/dnf, firewalld, systemd)依赖于 Python 3。

  2. 虚拟环境是必须的:为每个旧项目创建独立的虚拟环境,以避免不同项目间的包冲突。

    # 安装 virtualenv
    pip install virtualenv
    # 创建项目目录
    mkdir my_old_project
    cd my_old_project
    # 创建虚拟环境
    virtualenv -p /opt/rh/rh-python27/root/usr/bin/python venv  # SCL 路径
    # 或者
    virtualenv -p /usr/bin/python2.7 venv  # IUS 或源码编译路径
    # 激活虚拟环境
    source venv/bin/activate
    # 现在在这个环境中,pip 和 python 都指向 2.7
    pip install some_old_package
  3. 安全风险:再次强调,Python 2.7 没有安全更新,如果项目必须暴露在公网上,请务必做好隔离和防护。

  4. 依赖问题:许多现代 Python 包不再支持 Python 2.7,在安装时可能会遇到兼容性问题,需要寻找特定版本。

方法 优点 缺点 推荐度
SCL 官方支持,不污染系统,易于管理,可切换 需要学习 scl 命令 ⭐⭐⭐⭐⭐ (最高)
IUS 安装简单,提供独立的 python2.7 命令 第三方仓库,可能与某些系统包有细微冲突 ⭐⭐⭐⭐
源码编译 灵活,可定制所有选项 复杂,易出错,依赖多,需手动管理环境变量 ⭐⭐ (仅用于特殊需求)

对于绝大多数用户,请首选 SCL 方案,它最安全、最规范,也最能保护你的系统不受破坏。

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