在CentOS系统中,Python作为许多自动化工具和应用程序的核心组件,其版本升级往往是系统维护的重要环节,CentOS默认的yum包管理器依赖于Python 2.x,直接升级Python可能导致系统管理工具失效,采用安全、可控的方式升级Python版本至关重要,本文将详细介绍通过yum及相关工具在CentOS系统中升级Python的步骤、注意事项及最佳实践。

升级前的准备工作
在开始升级Python之前,必须做好充分的准备工作,以避免系统故障或数据丢失。
-
备份系统
使用tar命令创建系统快照,或通过rsync备份重要目录。tar -czf /root/centos-backup-$(date +%Y%m%d).tar.gz --exclude=/proc --exclude=/tmp --exclude=/mnt / --exclude=/sys
-
检查当前Python环境
确认系统中Python的版本及依赖关系:python --version which python rpm -qa | grep python
记录下所有与Python相关的包,尤其是
python、python-devel、python-setuptools等基础包。 -
添加第三方源(可选)
CentOS官方源可能未提供较新的Python版本,可通过EPEL(Extra Packages for Enterprise Linux)或IUS(Inline with Upstream Stable)源获取更高版本,安装EPEL源:yum install -y epel-release
升级Python的两种主要方式
(一)使用yum直接升级(仅限Python 2.x)
若仅需将Python 2.x升级到较新版本(如从2.7升级到2.7.18),可直接通过yum操作:
yum update python python-devel python-setuptools
升级后,通过python --version确认版本,但需注意,CentOS 7及更早版本默认Python 2.x,过度依赖Python 2的应用可能仍需兼容处理。
(二)编译安装Python 3.x(推荐)
对于需要Python 3.x的场景,编译安装是最可控的方式,以Python 3.9为例:
-
安装编译依赖

yum groupinstall -y "Development Tools" yum install -y openssl-devel bzip2-devel libffi-devel zlib-devel
-
下载源码并编译
从Python官网(https://www.python.org/downloads/)下载源码包:wget https://www.python.org/ftp/python/3.9.7/Python-3.9.7.tgz tar -xzf Python-3.9.7.tgz cd Python-3.9.7 ./configure --prefix=/usr/local/python3 make -j$(nproc) make install
-
配置环境变量
将Python 3加入系统路径:echo 'export PATH=/usr/local/python3/bin:$PATH' >> /etc/profile source /etc/profile
验证安装:
python3 --version。
处理Python版本冲突
CentOS系统工具(如yum)仍依赖Python 2,因此需确保两个版本共存且互不干扰。
-
保留系统Python 2
避免删除/usr/bin/python,防止yum失效,若需修改默认Python指向,可通过别名实现:alias python='/usr/local/python3/bin/python3'
将上述命令加入
~/.bashrc,使别名永久生效。 -
修复yum的Python依赖
若yum因Python版本问题报错,可修改/usr/bin/yum的shebang行:vim /usr/bin/yum
将首行的
#!/usr/bin/python改为#!/usr/bin/python2。
安装pip及虚拟环境
-
安装pip
Python 3.9通常自带pip3,若需安装:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py
-
创建虚拟环境
使用venv隔离项目依赖:python3 -m venv myproject-env source myproject-env/bin/activate
激活后,
pip和python命令将指向虚拟环境内的版本,避免全局污染。
升级后的验证与维护
-
测试关键应用
确保依赖Python的系统工具(如firewalld、selinux)正常工作,检查第三方脚本是否兼容新版本。 -
清理旧版本(可选)
若编译安装的旧版本不再需要,可删除源码目录及/usr/local/python3,但需确认无残留依赖。 -
定期更新pip及包
在虚拟环境中执行:pip install --upgrade pip pip list --outdated | cut -d ' ' -f 1 | xargs -n 1 pip install -U
相关问答FAQs
Q1:升级Python后,yum命令无法使用怎么办?
A:这通常是因为yum依赖的Python 2被替换或路径错误,可通过以下步骤修复:
- 检查
/usr/bin/yum的shebang行是否为#!/usr/bin/python2; - 若
python2命令不存在,重新安装python2包:yum install -y python2; - 若问题仍未解决,检查
/usr/libexec/urlgrabber-ext-down是否指向正确的Python解释器。
Q2:如何在CentOS中同时管理多个Python版本?
A:推荐使用pyenv工具管理多版本Python:
- 安装pyenv:
curl https://pyenv.run | bash; - 配置环境变量(将
~/.pyenv/bin加入PATH); - 安装所需版本:
pyenv install 3.8.10; - 切换版本:
pyenv global 3.8.10。
pyenv可自动处理版本路径冲突,避免系统工具受影响。