基础使用
查看可用版本
# 查看所有可安装的版本
pyenv install --list
# 查看特定版本(如 3.12 系列)
pyenv install --list | grep "3.12"
# 查看已安装的版本
pyenv versions
安装 Python 版本
# 安装特定版本
pyenv install 3.12.8
pyenv install 3.11.10
pyenv install 3.10.15
# 安装最新的稳定版本
pyenv install 3.12.8
# 安装预发布版本
pyenv install 3.13.0a1
设置 Python 版本
全局版本
# 设置全局默认版本
pyenv global 3.12.8
# 查看当前全局版本
pyenv global
本地版本(项目级)
# 在项目目录中设置本地版本
cd /path/to/your/project
pyenv local 3.11.10
# 查看当前目录的版本设置
pyenv local
# 取消本地版本设置
pyenv local --unset
Shell 版本(会话级)
# 在当前 shell 会话中设置版本
pyenv shell 3.10.15
# 取消 shell 版本设置
pyenv shell --unset
版本优先级
pyenv 按以下顺序查找 Python 版本:
PYENV_VERSION环境变量- 当前目录的
.python-version文件(local) - 父目录中最近的
.python-version文件 - 全局版本文件
~/.pyenv/version - 系统 Python
卸载版本
# 卸载特定版本
pyenv uninstall 3.9.18
# 列出可卸载的版本
pyenv versions
常见使用场景
场景一:多项目开发
# 项目 A 使用 Python 3.12
cd ~/projects/project-a
pyenv local 3.12.8
python --version # Python 3.12.8
# 项目 B 使用 Python 3.11
cd ~/projects/project-b
pyenv local 3.11.10
python --version # Python 3.11.10
场景二:测试兼容性
# 创建测试脚本
cat > test_compatibility.py << 'EOF'
import sys
print(f"Python {sys.version}")
# 测试代码...
EOF
# 在不同版本下测试
pyenv shell 3.10.15
python test_compatibility.py
pyenv shell 3.11.10
python test_compatibility.py
pyenv shell 3.12.8
python test_compatibility.py
场景三:开发环境与生产环境匹配
# 假设生产环境使用 Python 3.11.10
cd ~/projects/production-app
pyenv local 3.11.10
# 创建虚拟环境
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
场景四:学习新特性
# 安装 Python 3.13 预发布版本体验新特性
pyenv install 3.13.0a1
pyenv shell 3.13.0a1
# 测试新的类型语法等特性
python3 -c "print('Testing Python 3.13 features')"
与虚拟环境配合使用
pyenv + venv(推荐)
# 设置项目 Python 版本
cd ~/projects/myproject
pyenv local 3.12.8
# 创建虚拟环境
python -m venv .venv
# 激活虚拟环境
source .venv/bin/activate
# 安装依赖
pip install -r requirements.txt
pyenv + virtualenv 插件
# 安装 pyenv-virtualenv 插件
brew install pyenv-virtualenv
# 或者使用 git
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
# 添加到 shell 配置
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc
source ~/.zshrc
# 创建虚拟环境
pyenv virtualenv 3.12.8 myproject-env
# 激活虚拟环境
pyenv activate myproject-env
# 在项目中自动激活
cd ~/projects/myproject
pyenv local myproject-env
pyenv + conda
# 安装 Miniconda
pyenv install miniconda3-latest
# 设置为全局或本地版本
pyenv global miniconda3-latest
# 创建 conda 环境
conda create -n myenv python=3.12
conda activate myenv
故障排除
问题一:pyenv 命令找不到
症状:
zsh: command not found: pyenv
解决方案:
# 检查安装
which pyenv
# 重新添加到 PATH
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc
问题二:python 命令找不到或版本错误
症状:
$ pyenv local 3.12.8
$ python --version
zsh: command not found: python
# 或者显示错误的版本
解决方案:
# 重建 shims
pyenv rehash
# 检查 pyenv 初始化
eval "$(pyenv init -)"
# 检查版本设置
pyenv version
pyenv which python
# 手动重新加载配置
source ~/.zshrc
问题三:Python 安装失败
症状:
BUILD FAILED (OS X using python-build)
解决方案:
# macOS: 确保安装了构建依赖
brew install openssl readline sqlite3 xz zlib
# 设置编译标志
export LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix readline)/lib"
export CPPFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix readline)/include"
# 重新安装
pyenv install 3.12.8
# 或者使用预编译版本
pyenv install --list | grep "3.12.8"
问题四:虚拟环境版本不匹配
症状: 虚拟环境中的 Python 版本与预期不符
解决方案:
# 删除旧虚拟环境
rm -rf .venv
# 确认 pyenv 版本设置
pyenv local 3.12.8
python --version
# 重新创建虚拟环境
python -m venv .venv
source .venv/bin/activate
python --version
问题五:权限问题
症状:
Permission denied when installing Python
解决方案:
# 确保 pyenv 目录权限正确
ls -la ~/.pyenv
# 如果需要,修复权限
chmod -R 755 ~/.pyenv
# 不要使用 sudo 安装 Python 版本
# ❌ sudo pyenv install 3.12.8
# ✅ pyenv install 3.12.8
最佳实践
1. 项目级版本管理
在每个项目中设置本地版本:
cd ~/projects/myproject
pyenv local 3.12.8
echo ".python-version" >> .gitignore # 可选:加入版本控制
或者将 .python-version 加入版本控制:
# 让团队成员使用相同的 Python 版本
git add .python-version
git commit -m "Add Python version specification"
2. 虚拟环境命名规范
# 使用项目名和 Python 版本
pyenv virtualenv 3.12.8 myproject-3.12
pyenv virtualenv 3.11.10 myproject-3.11
# 或者使用日期
pyenv virtualenv 3.12.8 myproject-2024-01
3. 定期维护
# 定期更新 pyenv
brew upgrade pyenv # macOS
# 或者
cd $(pyenv root) && git pull # 从源码更新
# 清理不需要的版本
pyenv versions
pyenv uninstall 3.9.18
# 更新 pip 和 setuptools
pyenv exec pip install --upgrade pip setuptools
4. 团队协作
创建团队配置脚本:
#!/bin/bash
# setup-dev-env.sh
set -e
echo "Setting up development environment..."
# 安装所需的 Python 版本
if ! pyenv versions | grep -q "3.12.8"; then
echo "Installing Python 3.12.8..."
pyenv install 3.12.8
fi
# 设置项目版本
pyenv local 3.12.8
# 创建虚拟环境
if [ ! -d ".venv" ]; then
echo "Creating virtual environment..."
python -m venv .venv
fi
# 激活并安装依赖
source .venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
echo "Development environment setup complete!"
echo "Run 'source .venv/bin/activate' to activate the virtual environment."
5. 性能优化
# 使用镜像加速下载(中国用户)
export PYTHON_BUILD_MIRROR_URL="https://mirrors.huaweicloud.com/python"
# 或者使用其他镜像
export PYTHON_BUILD_MIRROR_URL="https://npm.taobao.org/mirrors/python"
# 编译优化
export PYTHON_CONFIGURE_OPTS="--enable-optimizations"
export PYTHON_CFLAGS="-march=native -mtune=native"
常用命令速查表
基础命令
| 命令 | 说明 |
|---|---|
pyenv versions | 列出已安装的 Python 版本 |
pyenv version | 显示当前活动的 Python 版本 |
pyenv install --list | 列出可安装的 Python 版本 |
pyenv install <version> | 安装指定的 Python 版本 |
pyenv uninstall <version> | 卸载指定的 Python 版本 |
pyenv rehash | 重建 shims |
版本设置
| 命令 | 说明 |
|---|---|
pyenv global <version> | 设置全局 Python 版本 |
pyenv local <version> | 设置当前目录的 Python 版本 |
pyenv shell <version> | 设置当前 shell 的 Python 版本 |
pyenv local --unset | 取消当前目录的版本设置 |
pyenv shell --unset | 取消当前 shell 的版本设置 |
实用命令
| 命令 | 说明 |
|---|---|
pyenv which python | 显示当前 python 命令的完整路径 |
pyenv exec pip list | 在当前 Python 版本中执行命令 |
pyenv root | 显示 pyenv 根目录 |
pyenv --version | 显示 pyenv 版本 |
虚拟环境(需要 pyenv-virtualenv)
| 命令 | 说明 |
|---|---|
pyenv virtualenv <python-version> <env-name> | 创建虚拟环境 |
pyenv activate <env-name> | 激活虚拟环境 |
pyenv deactivate | 停用虚拟环境 |
pyenv virtualenvs | 列出所有虚拟环境 |
总结
pyenv 是 Python 开发者必备的工具之一,它提供了:
- 简单易用: 一个命令就能切换 Python 版本
- 项目隔离: 每个项目可以使用不同的 Python 版本
- 系统安全: 不会影响系统自带的 Python
- 开发效率: 快速测试代码在不同版本下的兼容性
通过合理使用 pyenv,可以大大简化 Python 开发环境的管理,提高开发效率和代码质量。
本文档基于 pyenv 2.3+ 版本编写,具体功能可能因版本而异。