Skip to content

pyenv 教程 ​

什么是 pyenv ​

pyenv 是一个简单的 Python 版本管理工具,它允许你在同一台机器上安装和管理多个 Python 版本,而不会相互干扰。pyenv 可以:

  • 安装多个 Python 版本
  • 在不同版本间快速切换
  • 为不同项目设置特定的 Python 版本
  • 管理 Python 虚拟环境

安装 pyenv ​

Windows 安装 ​

  1. 下载并安装 pyenv-win
  2. 按照安装向导完成安装
  3. 安装完成后,重启终端

macOS 安装 ​

使用 Homebrew 安装:

bash
brew update
brew install pyenv

Linux 安装 ​

使用安装脚本:

bash
curl https://pyenv.run | bash

环境配置 ​

配置环境变量 ​

macOS/Linux ​

将以下内容添加到 ~/.bashrc 或 ~/.zshrc 文件中:

bash
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv virtualenv-init -)"

然后执行:

bash
source ~/.bashrc  # 或 source ~/.zshrc

Windows ​

pyenv-win 安装时会自动配置环境变量,无需手动设置。

基本使用 ​

查看可用的 Python 版本 ​

bash
pyenv install --list

安装指定版本的 Python ​

bash
pyenv install 3.9.7  # 安装 Python 3.9.7
pyenv install 3.8.10  # 安装 Python 3.8.10

查看已安装的 Python 版本 ​

bash
pyenv versions

设置全局 Python 版本 ​

bash
pyenv global 3.9.7

设置局部 Python 版本(当前目录) ​

bash
pyenv local 3.8.10

设置 shell 会话的 Python 版本 ​

bash
pyenv shell 3.7.10

卸载指定版本的 Python ​

bash
pyenv uninstall 3.7.10

虚拟环境管理 ​

创建虚拟环境 ​

bash
pyenv virtualenv 3.9.7 my-project

激活虚拟环境 ​

bash
pyenv activate my-project

退出虚拟环境 ​

bash
pyenv deactivate

列出所有虚拟环境 ​

bash
pyenv virtualenvs

删除虚拟环境 ​

bash
pyenv virtualenv-delete my-project

常见问题 ​

安装 Python 失败 ​

原因:缺少依赖包

解决方法:

  • Ubuntu/Debian:sudo apt install 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 python-openssl
  • CentOS/RHEL:sudo yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel

虚拟环境激活失败 ​

原因:环境变量配置问题

解决方法:确保正确配置了 PYENV_ROOT 和 PATH 环境变量。

最佳实践 ​

  1. 为每个项目创建独立的虚拟环境,避免依赖冲突
  2. 使用 .python-version 文件:在项目根目录创建此文件,指定项目使用的 Python 版本
  3. 定期更新 pyenv:使用 pyenv update 命令更新
  4. 合理管理 Python 版本:只安装项目需要的版本,避免安装过多版本占用空间

总结 ​

pyenv 是一个强大的 Python 版本管理工具,它可以帮助你轻松管理多个 Python 版本和虚拟环境,为不同项目提供隔离的开发环境。通过本文的教程,你应该能够掌握 pyenv 的基本使用方法,为你的 Python 开发工作提供便利。