概述
Pyenv 是一个强大的 Python 版本管理工具,允许在同一系统中安装和切换多个 Python 版本,而不影响系统自带的 Python。
核心功能:
- 🔧 多版本 Python 共存
- 🔄 灵活的版本切换机制
- 📦 简单的安装和管理
- 🎯 项目级版本隔离
适用场景:
- 不同项目需要不同 Python 版本
- 测试代码在多个 Python 版本的兼容性
- 避免影响系统自带 Python
- 开发环境与生产环境版本匹配
安装 Pyenv
一键安装
1 | curl https://pyenv.run | bash |
安装内容:
- pyenv:核心工具
- pyenv-virtualenv:虚拟环境插件
- pyenv-update:更新插件
- pyenv-doctor:诊断插件
配置环境变量
Zsh 用户(~/.zshrc):
1 | # Pyenv 配置 |
Bash 用户(~/.bashrc 或 ~/.bash_profile):
1 | # Pyenv 配置 |
应用配置:
1 | # Zsh |
验证安装
1 | # 检查 pyenv 版本 |
基础命令
查看版本
当前激活版本:
1 | pyenv version |
已安装的所有版本:
1 | pyenv versions |
说明:
system:系统自带的 Python*:当前激活的版本
列出可安装版本
查看所有可用版本:
1 | pyenv install --list |
过滤特定版本:
1 | # 查看所有 3.11.x 版本 |
安装 Python 版本
安装指定版本
1 | # 安装 Python 3.10.16 |
重建 shims
每次安装后必须执行:
1 | pyenv rehash |
rehash 的作用:
- 重新生成 shims(垫片)
- 确保新安装的 Python 可被识别
- 更新命令路径映射
加速安装(可选)
使用国内镜像:
1 | # 临时使用淘宝镜像 |
版本切换
三种切换方式
Pyenv 提供三种版本切换方式,优先级从高到低:shell > local > global
Global(全局)
作用域: 所有目录的默认版本
1 | # 设置全局版本 |
配置文件: ~/.pyenv/version
建议:
⚠️ 不建议改变系统全局版本,保持
system较安全
Local(项目级)
作用域: 当前目录及其子目录
1 | # 进入项目目录 |
配置文件: 当前目录的 .python-version
取消设置:
1 | pyenv local --unset |
使用场景:
- ✅ 推荐:为不同项目指定不同 Python 版本
- ✅ 团队协作:提交
.python-version到版本控制 - ✅ 自动切换:进入项目目录自动激活对应版本
Shell(会话级)
作用域: 当前 shell 会话
1 | # 临时切换版本 |
特点:
- 仅在当前终端窗口生效
- 关闭终端后失效
- 适合临时测试
版本优先级
优先级顺序(从高到低):
1 | shell(会话级) > local(项目级) > global(全局级) > system(系统级) |
示例场景:
1 | # 1. 设置全局版本为 3.10.16 |
版本管理
卸载版本
1 | # 卸载指定版本 |
更新 Pyenv
1 | # 使用 pyenv-update 插件 |
查看 Python 路径
1 | # 查看当前 Python 路径 |
常见问题
问题1:pyenv: version system not installed
错误信息:
1 | pyenv: version `system` not installed |
解决方案:
确保在 shell 配置文件中添加了初始化代码:
1 | # ~/.zshrc 或 ~/.bashrc |
然后重新加载配置:
1 | source ~/.zshrc # 或 source ~/.bashrc |
问题2:安装失败
可能原因: 缺少编译依赖
macOS 解决方案:
1 | # 安装 Xcode Command Line Tools |
Linux 解决方案:
1 | # Ubuntu/Debian |
问题3:命令找不到
症状: 安装后 pyenv 命令不可用
检查步骤:
- 确认 PATH 设置:
1 | echo $PATH | grep pyenv |
- 确认 pyenv 安装位置:
1 | ls -la ~/.pyenv |
- 重新添加环境变量并加载
卸载 Pyenv
方法一:保留配置
1 | # 1. 移除 shell 启动项中的 pyenv 配置 |
方法二:完全卸载(Homebrew)
1 | # 1. 移除 shell 配置 |
最佳实践
推荐配置
项目结构:
1 | my-project/ |
工作流程:
1 | # 1. 创建项目 |
常用命令速查
| 命令 | 说明 |
|---|---|
pyenv versions | 查看已安装版本 |
pyenv install -l | 列出可安装版本 |
pyenv install 3.x.x | 安装指定版本 |
pyenv uninstall 3.x.x | 卸载指定版本 |
pyenv global 3.x.x | 设置全局版本 |
pyenv local 3.x.x | 设置项目版本 |
pyenv shell 3.x.x | 设置会话版本 |
pyenv rehash | 重建 shims |
pyenv which python | 查看 Python 路径 |
版本选择建议
生产环境:
- ✅ 使用稳定版本(如 3.10.x、3.11.x)
- ✅ 避免使用 alpha/beta 版本
- ✅ 与目标部署环境版本一致
开发环境:
- ✅ 为每个项目设置 local 版本
- ✅ 团队统一 Python 版本
- ✅ 使用
.python-version文件
学习测试:
- ✅ 可以尝试最新版本
- ✅ 使用 shell 临时切换
- ✅ 不影响其他项目
总结
Pyenv 核心优势:
| 特性 | 说明 |
|---|---|
| ✅ 多版本共存 | 同时安装多个 Python 版本 |
| ✅ 灵活切换 | 三级切换机制(shell/local/global) |
| ✅ 项目隔离 | 不同项目使用不同版本 |
| ✅ 简单管理 | 命令简洁,易于使用 |
快速上手:
1 | # 安装 pyenv |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 小五的个人杂货铺!
