# 查看所有可安装的版本
pyenv install --list
# 查看特定版本(如 3.12 系列)
pyenv install --list | grep "3.12"
# 查看已安装的版本
pyenv versions
# 安装特定版本
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
# 设置全局默认版本
pyenv global 3.12.8
# 查看当前全局版本
pyenv global
# 在项目目录中设置本地版本
cd /path/to/your/project
pyenv local 3.11.10
# 查看当前目录的版本设置
pyenv local
# 取消本地版本设置
pyenv local --unset
# 在当前 shell 会话中设置版本
pyenv shell 3.10.15
# 取消 shell 版本设置
pyenv shell --unset
pyenv 按以下顺序查找 Python 版本:
PYENV_VERSION
环境变量.python-version
文件(local).python-version
文件~/.pyenv/version
# 卸载特定版本
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')"
# 设置项目 Python 版本
cd ~/projects/myproject
pyenv local 3.12.8
# 创建虚拟环境
python -m venv .venv
# 激活虚拟环境
source .venv/bin/activate
# 安装依赖
pip install -r requirements.txt
# 安装 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
# 安装 Miniconda
pyenv install miniconda3-latest
# 设置为全局或本地版本
pyenv global miniconda3-latest
# 创建 conda 环境
conda create -n myenv python=3.12
conda activate myenv
症状:
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
症状:
$ 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
症状:
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
在每个项目中设置本地版本:
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"
# 使用项目名和 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
# 定期更新 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
创建团队配置脚本:
#!/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."
# 使用镜像加速下载(中国用户)
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 |
安装指定的 Python 版本 |
pyenv uninstall |
卸载指定的 Python 版本 |
pyenv rehash |
重建 shims |
命令 | 说明 |
---|---|
pyenv global |
设置全局 Python 版本 |
pyenv local |
设置当前目录的 Python 版本 |
pyenv shell |
设置当前 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 activate |
激活虚拟环境 |
pyenv deactivate |
停用虚拟环境 |
pyenv virtualenvs |
列出所有虚拟环境 |
pyenv 是 Python 开发者必备的工具之一,它提供了:
通过合理使用 pyenv,可以大大简化 Python 开发环境的管理,提高开发效率和代码质量。
本文档基于 pyenv 2.3+ 版本编写,具体功能可能因版本而异。