- 强烈不推荐:在 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。

步骤 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 命令来启用它。
临时启用(当前终端会话有效)

# 启用 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,只需打开一个新的终端窗口即可。

使用 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.7 和 pip2.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
重要注意事项
-
不要覆盖系统 Python:绝对不要使用
yum install python或make install,这会破坏你的 CentOS 系统,因为很多系统管理工具(如yum/dnf,firewalld,systemd)依赖于 Python 3。 -
虚拟环境是必须的:为每个旧项目创建独立的虚拟环境,以避免不同项目间的包冲突。
# 安装 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
-
安全风险:再次强调,Python 2.7 没有安全更新,如果项目必须暴露在公网上,请务必做好隔离和防护。
-
依赖问题:许多现代 Python 包不再支持 Python 2.7,在安装时可能会遇到兼容性问题,需要寻找特定版本。
| 方法 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
| SCL | 官方支持,不污染系统,易于管理,可切换 | 需要学习 scl 命令 |
⭐⭐⭐⭐⭐ (最高) |
| IUS | 安装简单,提供独立的 python2.7 命令 |
第三方仓库,可能与某些系统包有细微冲突 | ⭐⭐⭐⭐ |
| 源码编译 | 灵活,可定制所有选项 | 复杂,易出错,依赖多,需手动管理环境变量 | ⭐⭐ (仅用于特殊需求) |
对于绝大多数用户,请首选 SCL 方案,它最安全、最规范,也最能保护你的系统不受破坏。
