Pyenv命令大全:环境管理与多版本Python切换实战教程

青禾大神
常见问题
发布于 2025-04-28
86 阅读
23 评论
2.4k 点赞
#Python

1. 安装 pyenv

通过 Homebrew 安装:

bash 复制代码
brew update
brew install pyenv

配置 Shell 环境(如 zsh):

bash 复制代码
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc

2. 安装 Python 版本

查看可安装的 Python 版本:

bash 复制代码
pyenv install --list

安装指定版本(如 3.12.0):

bash 复制代码
pyenv install 3.12.0 # 替换为你需要的版本号

安装旧版本(如 Python 2.7.18):

bash 复制代码
CFLAGS="-I$(brew --prefix openssl)/include" \
LDFLAGS="-L$(brew --prefix openssl)/lib" \
pyenv install 2.7.18

3. 管理 Python 版本

查看已安装的 Python 版本:

bash 复制代码
pyenv versions

设置全局默认 Python 版本:

bash 复制代码
pyenv global 3.12.0 # 所有终端会话默认使用此版本

设置当前目录的本地 Python 版本:

bash 复制代码
pyenv local 3.9.13 # 在目录下生成 `.python-version` 文件

临时切换 Python 版本(仅当前会话):

bash 复制代码
pyenv shell 3.8.5

4. 使用 pyenv-virtualenv(虚拟环境)

安装 pyenv-virtualenv 插件:

bash 复制代码
brew install pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc
source ~/.zshrc

创建虚拟环境:

bash 复制代码
pyenv virtualenv 3.9.13 myenv # 基于 Python 3.9.13 创建名为 myenv 的虚拟环境

激活/停用虚拟环境:

bash 复制代码
pyenv activate myenv # 激活
pyenv deactivate # 停用

删除虚拟环境:

bash 复制代码
pyenv virtualenv-delete myenv

5. 常见问题解决

安装 Python 时出现依赖错误:

确保安装了必要的依赖库:

bash 复制代码
brew install openssl readline sqlite3 xz zlib tcl-tk

Mac M1/M2 编译问题:

  • 使用 Homebrew 安装的依赖,并添加编译参数(参考上述 Python 2.7.18 的安装示例)。

6. 实际应用示例

项目中使用 pyenv:

bash 复制代码
mkdir myproject && cd myproject
pyenv local 3.12.0 # 设置项目使用的 Python 版本
python -m venv .venv # 创建虚拟环境(或用 pyenv-virtualenv)
source .venv/bin/activate
pip install requests # 安装项目依赖

常用命令总结

命令 作用
pyenv versions 查看已安装的 Python 版本
pyenv install --list 列出所有可安装的 Python 版本
pyenv install 3.12.0 安装指定 Python 版本
pyenv global 3.12.0 设置全局 Python 版本
pyenv local 3.9.13 设置当前目录的 Python 版本
pyenv virtualenv 3.9.13 myenv 创建虚拟环境

提示

  • 优先使用虚拟环境:避免全局安装 Python 包,减少依赖冲突。
  • 如果遇到权限问题,不要使用 sudo,这是 pyenv 设计上要避免的

青禾大神

Vue技术专家 | 5年开发经验

专注前端技术领域,Vue生态贡献者,定期分享前沿技术文章。

评论 (128)

前端小白

这篇文章讲得太好了,解决了我很多疑惑!

资深开发者

对依赖收集部分的讲解很深入,期待更多原理分析文章!

相关推荐

Vue3组合式API最佳实践

3.2k阅读 · 86评论

Pinia状态管理深度解析

2.5k阅读 · 45评论