在 CentOS 上同时使用多个 Python 版本,常见、稳妥的做法有以下几种(推荐用 Software Collections / 虚拟环境 / 编译安装)。
scl(Software Collections)适合 CentOS 7(官方支持多版本 Python)
yum install centos-release-scl -y
例如 Python 3.6 / 3.8 / 3.9
yum install rh-python36 rh-python38 rh-python39 -y
scl enable rh-python39 bash
python --version
或一行执行:
scl enable rh-python38 'python --version'
✅ 不会动系统
/usr/bin/python
pyenv(最灵活)适合 CentOS 7 / 8 / Stream
yum install -y gcc make patch zlib-devel bzip2 bzip2-devel \
openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel
curl https://pyenv.run | bash
echo '
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
' >> ~/.bashrc
source ~/.bashrc
pyenv install 3.7.17
pyenv install 3.9.18
pyenv install 3.11.6
pyenv global 3.9.18
# 或仅当前目录
pyenv local 3.11.6
virtualenv(多环境而非多版本)前提:已有多个 Python 可执行文件
python3.9 -m venv venv39
source venv39/bin/activate
./configure --prefix=/usr/local/python39
make && make install
然后:
/usr/local/python39/bin/python3
❌ 不要改 /usr/bin/python 软链接
# 危险!
ln -sf /usr/bin/python3 /usr/bin/python
会导致:
| 场景 | 推荐 |
|---|---|
| CentOS 7 服务器 | scl |
| 开发 / 多版本 | pyenv |
| 项目隔离 | virtualenv |
| 生产服务 | 容器 / venv |
如果你是 CentOS 几?服务器还是本地? 我可以给你一套精确命令。