CentOS 下 Python 顺利安装与多版本管理
一 安装前的关键原则
- 不要删除或覆盖系统自带的 Python 2.7(CentOS 6/7)或系统自带的 Python 3(CentOS 8),因为 yum/dnf 等系统工具强依赖它。所有自定义 Python 3.x 都应并行安装,通过明确的命令如 python3/pip3 调用,避免与系统 Python 冲突。若必须切换默认解释器,请使用 update-alternatives 或版本管理工具,而不是直接替换 /usr/bin/python。对于需要 Python 3.10+ 的场景,系统仓库版本往往偏旧,建议使用源码编译或 pyenv 安装。
二 三种稳妥的安装方式
- 方式一 使用 yum 快速安装(省心稳定)
- 更新并安装:
- sudo yum update -y
- sudo yum install -y python3 python3-pip
- 验证:
- python3 --version
- pip3 --version
- 说明:版本取决于仓库,适合快速上手与运维场景。
- 方式二 源码编译安装(指定版本与优化)
- 安装依赖:
- sudo yum groupinstall -y “Development Tools”
- sudo yum install -y openssl-devel bzip2-devel libffi-devel zlib-devel readline-devel sqlite-devel wget
- 下载与编译(示例为 3.11.x,可按需替换版本号):
- wget https://www.python.org/ftp/python/3.11.x/Python-3.11.x.tgz
- tar xzf Python-3.11.x.tgz && cd Python-3.11.x
- ./configure --enable-optimizations
- make -j “$(nproc)”
- sudo make altinstall
- 验证与软链:
- python3.11 --version
- sudo ln -s /usr/local/bin/python3.11 /usr/bin/python3.11
- sudo ln -s /usr/local/bin/pip3.11 /usr/bin/pip3.11
- 说明:使用 make altinstall 避免覆盖系统默认 python;如需自定义前缀,可用 –prefix 指定安装目录。
- 方式三 使用 pyenv 管理多版本(开发推荐)
- 安装依赖与 pyenv:
- sudo yum install -y git gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel
- curl https://pyenv.run | bash
- 配置环境(写入 ~/.bashrc 或 ~/.bash_profile):
- echo ‘export PATH=“$HOME/.pyenv/bin:$PATH”’ >> ~/.bashrc
- echo ‘eval “$(pyenv init --path)”’ >> ~/.bashrc
- echo ‘eval “$(pyenv init -)”’ >> ~/.bashrc
- echo ‘eval “$(pyenv virtualenv-init -)”’ >> ~/.bashrc
- source ~/.bashrc
- 安装与切换版本:
- pyenv install 3.10.12
- pyenv global 3.10.12
- python --version
- 说明:多版本并行、项目级切换,不污染系统环境。
三 多版本共存与切换
- 使用 update-alternatives(系统级切换)
- 注册候选版本:
- sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.11 1
- sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.9 2
- 交互选择默认版本:
- sudo update-alternatives --config python
- 说明:切换前确认 yum/dnf 仍可用,避免误改系统依赖。
- 使用 pyenv(用户级切换)
- 全局与局部切换:
- pyenv global 3.10.12
- pyenv local 3.9.18
- pyenv shell 3.8.18
- 说明:进入项目目录自动使用 .python-version 指定的版本,便于多项目并行。
四 虚拟环境与依赖管理
- 使用 venv(推荐)
- 安装与创建:
- sudo yum install -y python3-venv
- python3 -m venv venv
- source venv/bin/activate
- 常用操作:
- pip install -U pip
- pip install -r requirements.txt
- deactivate
- 说明:隔离项目依赖,避免版本冲突。
- 使用 conda(数据科学场景)
- 安装与创建环境:
- 下载安装脚本并执行:bash Anaconda3-*.sh
- conda create -n py310 python=3.10
- conda activate py310
- 说明:适合需要 conda 生态与二进制包的场景。
五 常见问题与排查
- 运行脚本调用错版本
- 使用 shebang 指定解释器路径:
- 在脚本首行写入:#!/usr/bin/env python3
- 或写入 which python3 的实际路径(如 /usr/bin/python3.11)
- 运行方式:python3 script.py 或赋予执行权限后用 ./script.py。
- pip 装到了错误版本或报 SSL 错误
- 确认 pip 对应版本:python3 -m pip --version
- 升级 pip:python3 -m pip install -U pip
- SSL 问题多因编译时缺少 openssl-devel,重新编译前安装依赖再 make。
- 误改系统默认 Python 导致 yum 不可用
- 恢复默认:sudo update-alternatives --config python,选择系统自带 python2.7 或 python3(仓库版)
- 原则:不要替换 /usr/bin/python,使用 python3/pip3 或版本管理工具。