温馨提示×

CentOS怎么配置多版本Python

小樊
41
2026-08-30 21:00:26
栏目: 编程语言

CentOS(7/8/Stream) 上配置 多版本 Python,常见且推荐的做法有 3 种。下面从 最推荐 → 最灵活 给你讲清楚,并附带实用示例。


✅ 一、最推荐方案:使用 pyenv(多版本共存、切换方便)

适用场景

  • 开发环境
  • 一台机器跑多个 Python 项目
  • 不想动系统 Python(很重要)

1️⃣ 安装依赖

sudo yum groupinstall -y "Development Tools"
sudo yum install -y gcc zlib-devel bzip2 bzip2-devel readline-devel \
sqlite sqlite-devel openssl-devel tk-devel libffi-devel xz-devel

2️⃣ 安装 pyenv

curl https://pyenv.run | bash

或者手动安装:

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

3️⃣ 配置环境变量

编辑 ~/.bashrc~/.bash_profile

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

生效:

source ~/.bashrc

4️⃣ 查看 & 安装 Python

pyenv install --list
pyenv install 3.8.18
pyenv install 3.10.13
pyenv install 3.12.1

5️⃣ 使用不同 Python 版本

pyenv global 3.10.13        # 全局
pyenv local 3.8.18          # 当前目录
pyenv shell 3.12.1          # 当前 shell

查看当前版本:

python --version

优点

  • 不影响系统 Python
  • 随意切换
  • 非常适合开发

✅ 二、官方推荐方案:使用 alternatives(系统级)

适用场景

  • 服务器环境
  • 只维护少量版本
  • 不用虚拟环境

1️⃣ 安装多个 Python(以源码为例)

wget https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tgz
tar -xzf Python-3.10.13.tgz
cd Python-3.10.13
./configure --enable-optimizations
make -j$(nproc)
sudo make altinstall

⚠️ 一定要用 altinstall,否则会覆盖系统 python


2️⃣ 注册到 alternatives

sudo alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.10 1
sudo alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2

3️⃣ 切换版本

sudo alternatives --config python3

优点

  • 系统级
  • 官方认可

缺点

  • 切换是全局的
  • 不适合开发多项目

✅ 三、最灵活方案:虚拟环境(强烈推荐)

多版本 + 多项目 的最佳实践

1️⃣ 为不同 Python 创建虚拟环境

python3.8 -m venv venv38
python3.10 -m venv venv310

2️⃣ 激活使用

source venv38/bin/activate
python --version

优点

  • 项目隔离
  • 不污染系统
  • 生产环境通用

❌ 不建议的做法

做法 原因
直接替换 /usr/bin/python 破坏 yum、dnf
yum install python3X CentOS 官方源版本少
用 root 跑 pyenv 权限风险

✅ 推荐组合(生产/开发)

场景 推荐
服务器 Python 3.9 + venv
开发机 pyenv + venv
CI/CD 固定 Python + venv

✅ 快速选择建议

  • 只要一个版本alternatives
  • 多个项目pyenv + venv
  • 生产环境venv

如果你愿意,可以告诉我:

  • ✅ CentOS 7 还是 8 / Stream?
  • ✅ 本机用还是服务器?
  • ✅ 是否需要兼容旧系统 Python?

我可以直接给你一整套 复制即用的配置方案

0