什么是 pyenv
pyenv 是一个 Python 版本管理工具,允许你在同一台机器上安装和管理多个 Python 版本。它通过修改 PATH 环境变量来切换不同版本的 Python。
核心概念
- 全局版本: 系统范围内的默认 Python 版本
- 本地版本: 特定项目目录的 Python 版本
- Shell 版本: 当前 shell 会话的 Python 版本
- shims: pyenv 创建的轻量级可执行文件,用于拦截 Python 命令
pyenv 的作用和优势
主要作用
- 多版本管理: 在同一系统上安装和使用多个 Python 版本
- 项目隔离: 不同项目可以使用不同的 Python 版本
- 开发测试: 轻松测试代码在不同 Python 版本下的兼容性
- 系统保护: 不会影响系统自带的 Python
优势对比
| 特性 | pyenv | 系统包管理器 | 官方安装包 |
|---|---|---|---|
| 多版本共存 | ✅ | ❌ | ❌ |
| 项目级版本控制 | ✅ | ❌ | ❌ |
| 不影响系统Python | ✅ | ❌ | ❌ |
| 易于卸载 | ✅ | ⚠️ | ❌ |
| 版本切换 | ✅ | ❌ | ❌ |
安装 pyenv
macOS 安装
方法一:使用 Homebrew(推荐)
# 安装 pyenv
brew install pyenv
# 安装构建依赖
brew install openssl readline sqlite3 xz zlib
方法二:使用安装脚本
curl https://pyenv.run | bash
Linux 安装
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 python3-openssl git
# 安装 pyenv
curl https://pyenv.run | bash
CentOS/RHEL/Fedora
# 安装依赖
sudo yum groupinstall -y "Development Tools"
sudo yum install -y zlib-devel bzip2-devel openssl-devel \
ncurses-devel sqlite-devel readline-devel tk-devel \
gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
# 安装 pyenv
curl https://pyenv.run | bash
配置环境
对于 Zsh (macOS 默认)
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
对于 Bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
重新加载配置
# 对于 zsh
source ~/.zshrc
# 对于 bash
source ~/.bashrc
# 或者重启终端
exec $SHELL