这是一个非常重要且常见的问题,因为 CentOS 7 自带的 Python 版本非常老旧,而现代应用和开发工作通常需要更新的 Python 版本。

- 系统自带 Python:CentOS 7 默认安装的是 Python 2.7.5,这个版本是系统工具(如
yum)依赖的,强烈建议不要删除或升级它。 - Python 3 的缺失:默认情况下,CentOS 7 的官方仓库中不包含 Python 3,你需要通过其他方式来安装。
- 最佳实践:推荐使用
pyenv或SCL(Software Collections) 来安装和管理多个 Python 版本,而不是直接替换系统 Python,这样可以避免破坏系统稳定性。
检查当前 Python 版本
我们来检查一下系统当前自带的 Python 版本。
打开终端,执行以下命令:
# 检查 Python 2 版本 python --version # 或者 python2 --version
预期输出:
Python 2.7.5
# 检查 Python 3 版本(大概率不存在) python3 --version
预期输出:

bash: python3: command not found
这证实了 CentOS 7 默认只安装了 Python 2.7.5,并且没有 Python 3。
为什么不要升级或删除系统自带的 Python 2.7.5?
许多系统级的工具和脚本(特别是软件包管理器 yum)是用 Python 2 编写的,如果你升级了系统自带的 Python,可能会导致这些工具无法正常工作,从而破坏系统的稳定性,甚至让你无法再安装或更新软件。
黄金法则: 系统自带的 Python 用于维护系统,你自己的项目和开发应该使用其他版本。
在 CentOS 7 上安装 Python 3 的几种方法
这里介绍三种最主流和推荐的方法,你可以根据自己的需求选择。
使用 EPEL 仓库安装 (最简单,但版本可能较旧)
EPEL (Extra Packages for Enterprise Linux) 是一个为 RHEL 和 CentOS 等系统提供高质量额外软件包的项目,它提供了一个 Python 3.6 的包。
步骤:
-
安装 EPEL 仓库
sudo yum install -y epel-release
-
安装 Python 3
sudo yum install -y python36
-
验证安装
python3.6 --version
预期输出:
Python 3.6.8
优点:
- 非常简单,一条命令即可。
- 由
yum管理,与其他系统集成度高。
缺点:
- 版本非常老旧(3.6.8),很多现代库需要更新的 Python 版本。
- 无法方便地在多个 Python 版本之间切换。
使用 SCL (Software Collections) (官方推荐,版本较新)
SCL 是 CentOS 官方提供的一种安装和使用多个软件版本的方式,而不会影响系统的默认版本,它提供了更新的 Python 3.6、3.8 和 3.9 版本。
步骤:
-
安装 SCL 包
sudo yum install -y centos-release-scl
-
安装你想要的 Python 版本 这里我们安装
rh-python38(Python 3.8) 作为示例。sudo yum install -y rh-python38
-
使用 Python SCL 安装的软件不会自动进入你的环境,你需要使用
scl命令来启用它。# 启用 rh-python38 环境 scl enable rh-python38 bash
执行后,你的当前终端会进入一个新的 Shell 环境,
python3命令指向 Python 3.8。 -
验证安装
python3 --version
预期输出:
Python 3.8.16 -
永久设置环境变量 (可选) 如果想让
python3命令在登录时自动可用,可以修改你的 shell 配置文件(如~/.bashrc)。echo 'source /opt/rh/rh-python38/enable' >> ~/.bashrc # 然后重新加载配置 source ~/.bashrc
注意:这样做可能会让某些依赖系统 Python 2 的脚本感到困惑,请谨慎使用。
优点:
- 官方支持,稳定可靠。
- 可以安装多个版本(如
rh-python36,rh-python38)并方便切换。 - 不会影响系统 Python。
缺点:
- 需要手动
scl enable来激活环境,对新手可能有点不直观。
使用 pyenv (最灵活,开发者首选)
pyenv 是一个强大的 Python 版本管理工具,它允许你在同一台机器上安装、切换和隔离多个 Python 版本,这是最灵活、最受开发者欢迎的方法。
步骤:
-
安装
pyenv的依赖项sudo yum install -y git gcc make patch openssl-devel zlib-devel readline-devel sqlite-devel bzip2-devel libffi-devel
-
安装
pyenv使用curl安装是最简单的方式。curl https://pyenv.run | bash
-
配置 Shell 环境
pyenv的安装脚本会告诉你如何配置你的 Shell,通常需要将以下几行添加到你的~/.bashrc文件末尾:echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init -)"' >> ~/.bashrc
然后重新加载配置文件使生效:
exec "$SHELL"
或者
source ~/.bashrc
-
安装 Python 3 现在你可以使用
pyenv安装任何你想要的 Python 版本,安装最新的 Python 3.11:# 列出所有可安装的版本 pyenv install --list # 安装一个特定版本,3.9.18 pyenv install 3.9.18
-
选择并使用 Python 版本
# 查看当前已安装的版本 pyenv versions # 输出: # * system (set by /home/user/.pyenv/version) # 3.9.18 # 为当前 Shell 设置全局 Python 版本 pyenv global 3.9.18 # 验证 python --version # 输出: # Python 3.9.18 # 你也可以为某个项目目录设置局部版本 cd /path/to/your/project pyenv local 3.8.16 # 这样,只要在这个目录下,python 命令就会指向 3.8.16
优点:
- 极度灵活:可以安装和切换任意 Python 版本。
- 环境隔离:可以为每个项目创建独立的虚拟环境。
- 开发者友好:是现代 Python 开发的标准工具之一。
缺点:
- 安装过程比前两种方法复杂。
- 占用更多磁盘空间,因为每个版本都是完整安装的。
总结与推荐
| 方法 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| EPEL 仓库 | 最简单,yum 管理 |
版本老旧,无法切换 | 快速临时使用,不关心版本 |
| SCL (官方) | 官方支持,稳定,可多版本 | 需要手动启用环境 | 追求稳定,需要官方支持,不希望安装过多工具 |
pyenv |
最灵活,环境隔离,版本齐全 | 安装复杂,占用空间多 | 强烈推荐给所有开发者,尤其是需要管理多个项目或频繁切换版本的人 |
对于绝大多数用户,特别是开发者,强烈推荐使用 pyenv,它提供了最现代、最灵活的 Python 管理体验,是解决 CentOS 7 Python 版本问题的最佳方案,如果你只是想快速用一下 Python 3 且不介意版本,EPEL 是最快捷的选择,SCL 则是一个很好的折中方案,介于官方支持和灵活性之间。
