在真实开发/运维环境里,"一台机器上必须同时跑多个 Python 版本"几乎成了标配。下面把常见痛点、主流解决方案、踩坑要点和典型流程一次性梳理清楚,照着抄作业即可。
典型共存场景
- 操作系统自带 2.7/3.6,业务代码要求 3.10
- 项目 A 依赖 TensorFlow 1.x(仅支持 3.7),项目 B 要用 PyTorch 2.x(需 3.10+)
- 打包 RPM/DEB 时,需要把解释器一起打进去,与系统 Python 隔离
- CI 要并行跑 3.8/3.9/3.10/3.11 四套测试
- 嵌入式/离线环境,源码编译多版本并静态链接 openssl、sqlite
如何管理多版本共存?
通常通过工具实现版本隔离与切换,常见工具包括:
pyenv
:轻量工具,可安装 / 切换全局 / 局部 Python 版本;conda
:适用于数据科学场景,支持创建不同版本的虚拟环境;virtualenv
/venv
:结合特定版本 Python 创建虚拟环境,隔离项目依赖。
这里我们主要介绍 pyenv
的安装和使用
安装 pyenv
linux/mac 安装 pyenv
前置条件
- 确保你的系统已安装基本开发工具(如 git 和编译工具),否则可能无法编译 Python 版本。
- 对于 Linux/macOS,建议使用包管理器安装依赖。
安装步骤
-
安装依赖
在开始之前,安装必要的编译工具。不同的操作系统命令如下:-
Ubuntu/Debian:
sudo apt update sudo apt install -y make build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev
-
CentOS/RHEL:
sudo yum groupinstall "Development Tools" sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel \ sqlite-devel readline-devel tk-devel libffi-devel xz-devel
-
macOS(使用 Homebrew):
brew install openssl readline sqlite3 xz zlib tcl-tk
-
-
安装 pyenv
使用官方推荐的安装脚本:curl https://pyenv.run | bash # 或者自己clone # git clone https://github.com/pyenv/pyenv.git ~/.pyenv
这会将 pyenv 安装到 ~/.pyenv 目录。
-
配置环境变量
安装完成后,将以下内容添加到你的 shell 配置文件(根据你使用的 shell,选择对应的文件:~/.bashrc
、~/.zshrc
或~/.bash_profile
):echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo -e 'if command -v pyenv &>/dev/null; then\n eval "$(pyenv init --path)"\nfi' >> ~/.bashrc
保存文件后,运行以下命令使配置生效:
source ~/.bashrc # 或 ~/.zshrc、~/.bash_profile,根据你的 shell # 或者直接重启 shell # exec $SHELL
-
验证安装
检查 pyenv 是否正确安装:pyenv --version
如果输出类似 pyenv 2.x.x,说明安装成功。
Windows 系统安装 pyenv
Windows 上原生的 pyenv 支持有限,推荐使用 pyenv-win(一个专为 Windows 设计的版本)。
安装 pyenv-win
-
使用包管理器安装(推荐):
-
如果有 Scoop:
scoop install pyenv
-
如果有 Chocolatey:
choco install pyenv-win
-
-
手动安装:
- 从 GitHub 下载 pyenv-win:https://github.com/pyenv-win/pyenv-win
- 解压到 C:\Users<你的用户名>.pyenv
- 添加环境变量:
- PYENV = C:\Users<你的用户名>.pyenv\pyenv-win
- PYENV_ROOT = C:\Users<你的用户名>.pyenv\pyenv-win
- PYENV_HOME = C:\Users<你的用户名>.pyenv\pyenv-win
- 将 %PYENV%\bin 和 %PYENV%\shims 添加到系统 PATH。
-
验证:
pyenv --version
使用方法
使用 pyenv
常用命令
以下是 pyenv 的基本用法:
-
查看可用 Python 版本
列出所有可安装的 Python 版本:pyenv install --list
输出会显示大量版本,例如 3.8.12、3.9.10、3.10.9 等。
-
安装特定 Python 版本
安装你需要的版本,例如 Python 3.10.9:pyenv install 3.10.9
- 安装过程会下载并编译源码,可能需要几分钟。
- 如果需要加速,可以使用镜像(见下方“高级技巧”)。
-
设置全局 Python 版本
将某个版本设为默认:pyenv global 3.10.9
检查当前版本:
python --version
-
设置项目本地版本
在特定项目目录中设置 Python 版本:cd /path/to/your/project pyenv local 3.10.9
这会在当前目录生成一个 .python-version 文件,进入该目录时会自动切换版本。
-
查看已安装的版本
列出本地安装的 Python 版本:pyenv versions
输出示例:
system * 3.10.9 (set by /home/user/.pyenv/version) 3.9.10
-
卸载 Python 版本
删除某个版本:pyenv uninstall 3.10.9
Q.E.D.