CentOS/RHEL Linux下用yum或dnf安装Python教程

林舟
林舟
发布时间:2026-11-12 | 6人浏览过
原创

针对CentOS 7、8、9及RHEL系列Linux系统的实用教程,系统讲解如何使用官方包管理器yum或dnf安装与配置Python 3、pip及开发头文件,并规范使用虚拟环境隔离。

适用系统:CentOS 7 / 8 / 9 (Stream) | RHEL 7 / 8 / 9 包管理器:yum / dnf 运行环境:生产服务端 / 运维部署
CentOS/RHEL Linux下用yum或dnf安装Python教程
图示:CentOS / RHEL 系统原生包管理器安装与配置 Python 全景概览
在 CentOS 与 RHEL(Red Hat Enterprise Linux)服务器环境中部署 Python,使用操作系统自带的原生包管理器(CentOS 7 下为 yum,CentOS 8/9 及 RHEL 8/9 下为 dnf)是最安全、稳定且易于维护的方式。相较于源码编译安装,包管理器能够自动处理系统底层库依赖,并在后续提供便捷的安全补丁更新。本文将具体阐述如何在不同发行版中确认包管理器选型、安装完整 Python 环境并规范建立隔离的运行空间。

一、确认操作系统版本与包管理器选型

CentOS 和 RHEL 在版本迭代中发生了关键的底层变更:CentOS 7 基于较早的架构,默认以 Python 2.7 维持系统运维工具运转;而从 RHEL 8 / CentOS 8 开始,系统包管理器升级为 dnf(原 yum 命令通常保留为指向 dnf 的符号链接),并引入了 AppStream 模块流(Application Streams)机制。到了 RHEL 9 / CentOS Stream 9,系统已完全转向现代 Python 3 运行时。

在执行任何安装之前,请登录终端并执行以下命令确认当前系统的版本发行代号与内核信息:

执行命令:
cat /etc/os-release
示例输出(以 CentOS Stream 9 为例):
NAME="CentOS Stream"
VERSION="9"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="9"
PRETTY_NAME="CentOS Stream 9"

查明当前操作系统大版本后,即可明确对应的包管理工具与仓库策略。以下为系统版本与包管理器的对应逻辑:

CentOS/RHEL Linux下用yum或dnf安装Python教程
图1:CentOS / RHEL 发行版与包管理器(yum / dnf)选型决策关系图

从图1可以看出,各主要版本的技术分支如下:

  • CentOS 7 / RHEL 7:必须使用 yum。官方基础源仅包含老旧 Python 版本,需先行安装 EPEL(Extra Packages for Enterprise Linux)扩展源以获得稳定的 Python 3.6 或更高版本。
  • CentOS 8 / RHEL 8:主要使用 dnf(执行 yum 本质上也是调用 dnf)。通过 dnf module 可以在同一个系统内方便地切换与安装 Python 3.6、3.8 或 3.9 等不同模块流。
  • CentOS Stream 9 / RHEL 9:全面采用 dnf。基础系统默认自带 Python 3.9,同时官方仓库提供了独立的 python3.11、python3.12 平行安装包。

二、核心安装步骤:使用 yum 或 dnf 部署 Python

许多初学者在安装 Python 时往往只安装了基础的解释器二进制文件,但在随后使用 pip 下载三方包或编译包含 C 语言扩展(如 cryptography、psycopg2、numpy)的依赖库时,频繁遭遇缺失 Python.h 文件的错误。

因此,在生产环境中,标准的做法是安装包含“解释器核心 + pip 包管理器 + 开发头文件”的基础三件套。整个安装流程可分解为环境侦测、仓库检索、实际安装与结果检验四个阶段:

CentOS/RHEL Linux下用yum或dnf安装Python教程
图2:Linux 下使用 yum / dnf 安装 Python 的标准化操作全流程

1. 在 CentOS 7 / RHEL 7 环境下安装

在 CentOS 7 中,首先需要安装 epel-release 仓库以激活高质量企业级扩展包,然后安装 Python 3 及其套件:

执行命令:
# 1. 安装 EPEL 扩展仓库源
sudo yum install -y epel-release

# 2. 更新仓库缓存
sudo yum makecache

# 3. 安装 Python 3 解释器、pip 及开发包
sudo yum install -y python3 python3-pip python3-devel

2. 在 CentOS 8 / RHEL 8 环境下安装(模块流方式)

RHEL 8 / CentOS 8 引入了 AppStream 模块。可以先通过 dnf module list 查询仓库支持的 Python 版本流:

执行命令:
dnf module list python*
示例输出:
CentOS Stream 8 - AppStream
Name      Stream    Profiles             Summary
python27  2.7 [d]   common [d]           Python 2.7 interpreter
python36  3.6 [d]   common [d], build    Python 3.6 interpreter
python38  3.8 [d]   common [d], build    Python 3.8 interpreter
python39  3.9 [d]   common [d], build    Python 3.9 interpreter

提示:[d]表示默认流,[i]表示已安装

若需要安装 Python 3.9,可直接通过模块化安装命令或常规安装命令进行操作:

执行命令:
# 安装 Python 3.9 解释器、pip 工具及开发头文件
sudo dnf install -y python39 python39-pip python39-devel

3. 在 CentOS 9 / RHEL 9 环境下安装

在 CentOS Stream 9 或 RHEL 9 中,基础仓库已经内置了 Python 3.9。若业务需要更高版本(例如 Python 3.11),可以直接通过包管理器安装指定的独立软件包:

执行命令:
# 方案 A:安装系统默认的 Python 3 基础套件
sudo dnf install -y python3 python3-pip python3-devel

# 方案 B:安装更新的 Python 3.11 独立套件(适合新项目开发)
sudo dnf install -y python3.11 python3.11-pip python3.11-devel

三、安装结果验证

安装完成后,必须检查二进制文件的可执行路径及版本号,确保系统环境变量中的软链与预期完全匹配。

执行命令:
# 检查 python3 版本
python3 --version

# 检查 pip3 版本与关联路径
pip3 --version

# 检查可执行文件绝对路径
which python3
which pip3
示例输出:
$ python3 --version
Python 3.9.18

$ pip3 --version
pip 21.2.3 from /usr/lib/python3.9/site-packages/pip (python 3.9)

$ which python3
/usr/bin/python3

如果输出了正确的版本号并且路径位于 /usr/bin/python3,说明系统级安装已顺利就绪。

四、系统 Python 与开发隔离原则(关键避坑指南)

在 CentOS 与 RHEL 维护实践中,最常见的事故之一就是运维人员为了让 python 命令默认指向 Python 3,盲目修改软链接或在全局使用 sudo pip install 安装软件包。

⚠️ 运维安全红线:切勿改动系统级 Python 软链
CentOS / RHEL 的底层包管理器 yum、dnf 以及系统防火墙守护进程 firewalld,其本身就是依赖系统自带特定 Python 解释器运行的脚本!如果擅自将 /usr/bin/python 替换为不受系统受信任库支持的其它版本,会导致 yum 和 dnf 立即报出 SyntaxError 或模块缺失错误,导致整个系统包管理功能瘫痪。

为了保障宿主系统的长期稳定,严禁直接在全局系统目录(如 /usr/lib/python3.x/site-packages)中随意堆积业务依赖。工业界标准的做法是通过 Python 原生内置的 venv 模块为每个项目构建专用的虚拟运行空间。

CentOS/RHEL Linux下用yum或dnf安装Python教程
图3:CentOS/RHEL 系统原生 Python 与业务虚拟环境(venv)隔离架构

标准化虚拟环境操作实操

使用非 root 普通用户创建并激活专属项目空间,过程非常轻量且安全:

1. 创建项目目录并初始化虚拟沙箱:
# 创建工作区
mkdir -p ~/projects/myapp && cd ~/projects/myapp

# 创建名为 venv 的虚拟环境目录
python3 -m venv venv
2. 激活虚拟环境:
source venv/bin/activate

激活后,终端命令行前缀将出现 (venv) 标识。此时执行的所有 python 与 pip 命令都会定向到沙箱内部,不会影响外部系统:

3. 在隔离沙箱中安装业务依赖并测试:
# 在虚拟环境内安全升级 pip 本身
pip install --upgrade pip

# 安装业务依赖示例(如 requests)
pip install requests

# 退出虚拟环境(返回宿主机状态)
deactivate

五、常见问题排查与解决办法

1. 编译安装三方库报错:“fatal error: Python.h: No such file or directory”

原因说明:在安装包含 C/C++ 绑定的 Python 库时,系统需要调用 C 编译器编译底层代码,缺少 python3-devel 开发包即意味着缺少对应的头文件。此外,若系统未安装 GCC 编译链也会失败。

解决方法:补充安装开发头文件包与开发工具组:

sudo dnf install -y gcc python3-devel

2. 执行 pip3 提示命令未找到(command not found)

原因说明:在某些精简安装的 CentOS/RHEL 虚拟机镜像中,安装 python3 最小包时默认可能不附带 pip。

解决方法:显式安装 pip 软件包,或者使用 Python 自带的 ensurepip 模块修复:

# 首选:通过包管理器安装
sudo dnf install -y python3-pip

# 备选:通过原生模块生成 pip
python3 -m ensurepip --default-pip

3. 多版本 Python 并存时的调用规范

如果在 RHEL 9 上同时安装了系统自带的 python3(3.9)和后续安装的 python3.11,应当养成显式声明版本调用程序的习惯:

# 调用 3.9 版本创建环境
python3.9 -m venv env39

# 调用 3.11 版本创建环境
python3.11 -m venv env311

显式使用精确版本号能够彻底杜绝脚本执行环境错乱的问题。

六、安装运维速查与要点总结

掌握 CentOS 与 RHEL 环境下的 Python 部署,核心在于抓住“选择正确包名”、“安装开发三件套”以及“坚持虚拟环境隔离”这三个基石。

CentOS/RHEL Linux下用yum或dnf安装Python教程
图4:CentOS/RHEL 安装 Python 核心技术要点与避坑速查表

下表汇总了各典型发行版的快速对照矩阵,便于日常维护查阅:

系统版本 推荐包管理器 前置仓库配置 标准安装推荐命令
CentOS 7 / RHEL 7 yum 需要安装 epel-release yum install python3 python3-pip python3-devel
CentOS 8 / RHEL 8 dnf 内置 AppStream 模块源 dnf install python39 python39-pip python39-devel
CentOS 9 / RHEL 9 dnf 官方 BaseOS / AppStream dnf install python3.11 python3.11-pip python3.11-devel

通过遵循上述规范,既能充分享受操作系统官方维护包带来的稳定性和安全性,又能保障生产服务器的包管理器不受污染,为后续的 Python 业务系统部署打下扎实的基础。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表