⚠️ 重要提示:Python 2.7 已于 2025 年 1 月 1 日停止官方支持(EOL)
这意味着它不会再收到任何安全补丁、错误修复或功能更新,在连接到互联网的服务器上使用 Python 2.7 存在安全风险,请仅将其用于维护无法升级到 Python 3 的旧项目。

使用系统包管理器(最简单,但不推荐)
这是最直接的方法,适用于快速安装或进行简单的测试,但通常安装的版本可能比较旧,并且会和系统原有的 Python 工具(如 yum)产生冲突。
对于基于 Red Hat/CentOS/Fedora 的系统 (使用 yum)
# 检查系统是否已安装 python 2.7 python2.7 --version # 如果没有安装,使用 yum 安装 sudo yum install python27 # 安装 pip (Python 2.7 的包管理器) sudo yum install python27-pip
对于基于 Debian/Ubuntu 的系统 (使用 apt)
# 更新软件包列表 sudo apt-get update # 安装 python 2.7 sudo apt-get install python2.7 # 安装 pip (Python 2.7 的包管理器) sudo apt-get install python-pip
优点:
- 命令简单,一键安装。
- 由系统包管理器管理,可以方便地卸载。
缺点:
- 版本老旧:系统仓库中的 Python 2.7 版本通常非常古老(CentOS 7 的是 2.7.5,Ubuntu 18.04 的是 2.7.17),可能缺少你项目所需的某些新特性或 bugfix。
- 破坏系统环境:在 Linux 中,
/usr/bin/python通常指向系统自带的 Python,用于系统脚本,直接覆盖它可能导致系统管理工具(如yum,apt)失效。 - 权限问题:使用
sudo安装的包会安装在系统级,可能导致权限冲突。
使用 pyenv(强烈推荐)
pyenv 是一个优秀的 Python 版本管理工具,它允许你在同一台机器上安装和管理多个 Python 版本,而不会干扰系统自带的 Python,这是开发人员最推荐的方法。

安装 pyenv (通常在几秒钟内完成)
# 克隆 pyenv 仓库到你的用户主目录 git clone https://github.com/pyenv/pyenv.git ~/.pyenv # 设置环境变量 echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc # 初始化 pyenv echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc # 重新加载你的 shell 配置文件,使更改生效 exec "$SHELL"
使用 pyenv 安装 Python 2.7
pyenv 已经准备好了,你可以用它来安装任何你想要的 Python 版本。
# 查看所有可安装的 Python 2.7 版本 pyenv install --list | grep " 2.7" # 安装一个特定的 Python 2.7 版本 (2.7.18) # pyenv 会自动下载源码并编译,确保你的系统已安装编译依赖 pyenv install 2.7.18
安装编译依赖(非常重要!)
如果在安装 pyenv 时遇到错误,很可能是因为缺少编译所需的库,请根据你的 Linux 发行版安装它们:
- Red Hat / CentOS / Fedora:
sudo yum groupinstall "Development Tools" sudo yum install openssl-devel bzip2-devel libffi-devel
- Debian / Ubuntu:
sudo apt-get update sudo apt-get install make build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
使用 pyenv 切换 Python 版本
# 查看所有已安装的 Python 版本 pyenv versions # 设置当前目录(及其所有子目录)使用的 Python 版本为 2.7.18 # 这会在当前目录下创建一个 `.python-version` 文件 pyenv local 2.7.18 # 验证当前使用的 Python 版本 python --version # 应该会输出: Python 2.7.18 # 你也可以全局设置一个默认版本(不推荐,建议用 local) # pyenv global 2.7.18
优点:
- 隔离环境:不会污染系统 Python。
- 版本灵活:可以轻松安装和切换任意 Python 版本。
- 环境一致性:可以轻松地在团队中同步开发环境。
- 安装最新补丁:可以安装 Python 2.7 的最新版本(如 2.7.18),比系统仓库的版本新得多。
缺点:

- 安装过程稍复杂,需要首次配置。
- 编译安装需要时间,且消耗 CPU 资源。
从源码手动编译(最灵活,但最复杂)
这种方法适合需要完全自定义编译选项的高级用户,或者 pyenv 无法满足的特殊需求。
安装编译依赖
这一步和方法二中的 pyenv 依赖安装完全相同。
- Red Hat / CentOS / Fedora:
sudo yum groupinstall "Development Tools" sudo yum install openssl-devel bzip2-devel libffi-devel
- Debian / Ubuntu:
sudo apt-get update sudo apt-get install make build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
下载并编译 Python 2.7
# 创建一个工作目录并进入 mkdir ~/python-src && cd ~/python-src # 下载 Python 2.7 的最新源码 (2.7.18) wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz # 解压 tar -xvf Python-2.7.18.tgz # 进入解压后的目录 cd Python-2.7.18 # 配置编译选项 # --prefix 指定了安装路径,我们安装在 ~/python2.7 下,避免和系统冲突 ./configure --prefix=$HOME/python2.7 # 编译 (这个步骤会比较慢) make -j$(nproc) # -j$(nproc) 使用所有可用的 CPU核心进行加速编译 # 安装 make install
配置环境变量
为了让系统能找到你新安装的 Python,需要修改 ~/.bashrc 文件。
# 打开配置文件 nano ~/.bashrc # 在文件末尾添加以下内容 export PATH="$HOME/python2.7/bin:$PATH" export PYTHONPATH="$HOME/python2.7/lib/python2.7/site-packages:$PYTHONPATH" # 保存并退出 (在 nano 中是 Ctrl+X, Y, Enter) # 重新加载配置文件 exec "$SHELL"
验证安装
# 检查版本 python --version # 应该输出: Python 2.7.18 # 检查 pip 是否可用 pip --version
优点:
- 完全控制:可以自定义所有编译选项(如启用/禁用特定模块)。
- 版本最新:可以手动下载最新的 2.7 版本源码进行编译。
缺点:
- 过程复杂:需要手动处理下载、配置、编译、安装和路径配置。
- 容易出错:任何一个步骤出错都可能导致安装失败。
- 维护困难:升级或卸载需要手动操作。
总结与建议
| 方法 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| 系统包管理器 | 简单快速 | 版本旧,可能破坏系统 | 快速临时测试,不关心版本 |
pyenv |
环境隔离,版本灵活,易于管理 | 首次配置稍复杂 | 所有开发场景,尤其是需要维护多版本 Python 的项目 |
| 源码编译 | 完全自定义,版本最新 | 过程复杂,易出错,维护难 | 高级用户,有特殊编译需求 |
给您的最终建议:
- 如果您是开发者,请毫不犹豫地选择
pyenv,它会为您省去无数麻烦,是 Python 生态中的标准工具。 - 如果您只是临时在服务器上运行一个旧脚本,并且不介意使用旧版本,可以使用系统包管理器,但请务必注意不要覆盖系统 Python。
- 除非您有非常特殊的需求,否则不推荐从源码手动编译,因为
pyenv已经把这个过程自动化得很好了。
