不能直接替换系统默认Python,否则yum/dnf会失效;应并行安装新版本,推荐用包管理器装python3、pyenv管理或多版本源码altinstall。

CentOS 升级 Python 不能直接替换系统默认的 /usr/bin/python,否则 yum(CentOS 7 及更早)或 dnf(CentOS 8+)会立即失效——因为它们强依赖系统自带的 Python 解释器(通常是 2.7 或 3.6+)。正确做法是**保留原版本、并行安装新版本**,再按需切换,默认不破坏系统工具。
推荐方法:用包管理器安装 Python 3(最安全)
适用于 CentOS 7/8/9,无需编译,不影响系统 Python:
- 先更新系统:
sudo yum update -y(CentOS 7)或sudo dnf update -y(CentOS 8+) - 启用 EPEL 仓库(提供新版软件):
sudo yum install epel-release -y(CentOS 7)或sudo dnf install epel-release -y(CentOS 8+) - 安装 Python 3:
sudo yum install python3(CentOS 7 默认装 3.6),或sudo dnf install python3(CentOS 8+ 默认 3.9+) - 验证:
python3 --version,此时python命令仍指向旧版(如 2.7),python3是新增命令,完全隔离
开发需求:用 pyenv 管理多版本(最灵活)
适合需要频繁切换 Python 版本的开发者,不触碰系统路径:
- 装依赖:
sudo yum groupinstall "Development Tools"+sudo yum install zlib-devel bzip2-devel openssl-devel sqlite-devel libffi-devel readline-devel - 一键安装 pyenv:
curl https://pyenv.run | bash - 配置环境变量(写入
~/.bashrc):export PATH="$HOME/.pyenv/bin:$PATH"eval "$(pyenv init --path)"eval "$(pyenv init -)"
执行source ~/.bashrc生效 - 安装指定版本(如 3.12.2):
pyenv install 3.12.2
设为全局默认:pyenv global 3.12.2(仅当前用户生效,不影响系统)
特殊场景:源码编译安装(需自定义或旧系统)
仅建议用于 CentOS 5/6 或必须使用特定补丁版本的情况。关键原则是避免覆盖系统 Python:
立即学习“Python免费学习笔记(深入)”;
- 装编译依赖:
sudo yum groupinstall "Development Tools"+sudo yum install openssl-devel bzip2-devel libffi-devel zlib-devel - 下载解压源码(例如 Python 3.11.9):
wget https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz && tar xzf Python-3.11.9.tgz && cd Python-3.11.9 - 配置安装到独立路径:
./configure --prefix=/usr/local/python311 --enable-optimizations - 编译安装:
make -j$(nproc) && sudo make altinstall(注意是altinstall,不是install) - 验证:
python3.11 --version;软链接可手动建在用户目录,切勿修改 /usr/bin/python
绝对要避开的坑
以下操作会导致系统包管理器瘫痪,务必禁止:
- 执行
rm /usr/bin/python或ln -sf /usr/local/bin/python3.11 /usr/bin/python - 运行
make install(而非make altinstall)安装 Python 3.x - 未修改
/usr/bin/yum头部就强行切换系统python软链接(即使改了,dnf/yum 也可能因模块路径错乱而失败)











