在使用pyenv管理Python解释器版本后,通过其插件创建虚拟环境是标准做法。
最常用的插件是 pyenv-virtualenv,它能与pyenv深度集成,让你直接基于已安装的任何Python版本解释器创建独立的虚拟环境。
一般来说, 你下载了pyenv工具之后, 会自动安装pyenv-virtualenv这个插件的.
该插件在~/.pyenv/plugins目录下
1/插件选择与核心功能
你可以根据需求选择不同的虚拟环境插件,核心对比如下:
| 插件名称 | 核心功能 | 适用场景 |
|---|---|---|
pyenv-virtualenv | 专为pyenv设计的官方推荐插件,能无缝管理虚拟环境,支持自动激活。 | 大多数情况下的首选,与pyenv集成度最高。 |
virtualenv / venv | Python官方或第三方独立的虚拟环境工具,需手动指定pyenv安装的解释器路径。 | 项目要求使用标准工具,或需更精细控制环境创建参数。 |
virtualenvwrapper | 一套扩展命令,用于组织和管理多个virtualenv环境。 | 习惯特定命令集,需要集中管理大量虚拟环境目录。 |
2/安装pyenv-virtualenv插件
有以下2种安装的方式
<1>你可以通过Homebrew安装(如果使用Mac且已安装Homebrew,方法一更便捷)。
brew install pyenv-virtualenv
<2>通过 Git 安装(官方通用方法,推荐):
git clone https://github.com/pyenv/pyenv-virtualenv.git $(PYENV_HOME)/plugins/pyenv-virtualenv
# PYENV_HOME环境变量是你已经在.zshrc文件已经定义好的了
# 你安装完pyenv之后, 就应该在.zshrc文件中配置好该环境变量了
3/配置pyenv-virtualenv
安装后,需要将插件初始化添加到你的shell配置文件(如 ~/.zshrc 或 ~/.bashrc)中:
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc
然后重启终端或执行 source ~/.zshrc 使配置生效。此配置可实现进入项目目录时自动激活虚拟环境。
4/创建与使用虚拟环境
前提
# 先查看有哪一些python解释器版本可以安装
pyenv install --list
# 再通过pyenv工具安装3.9.5版本的python解释器, 安装之后在~/.pyenv/versions目录下
pyenv install 3.9.5
<1>创建环境:
```bash
# 示例:基于Python 3.9.5创建名为pyenv_env_395的虚拟环境
pyenv virtualenv 3.9.5 pyenv_vir_env_395
# 创建的虚拟环境在~/.pyenv/versions/3.9.5/envs目录下
```
<2>删除环境
```bash
pyenv virtualenv-delete pyenv_vir_env_395 # 亲测, 该方法可用
# 或者
pyenv uninstall pyenv_vir_env_395
```
<3>激活环境:
```bash
pyenv activate pyenv_vir_env_395
```
激活后,终端提示符前通常会显示环境名称。如果你配置了自动激活,进入设置了该环境的目录时会自动完成。
<4>使用环境:
```bash
# 激活后,所有通过`pip`安装的包都会独立于系统和其他环境。
pip install requests flask
```
<5>退出环境:
```bash
pyenv deactivate
```
<6>查看所有环境:
```bash
# 列出所有虚拟环境:
pyenv virtualenvs
```
5/最佳实践与常见问题
- 为每个项目创建独立环境:这是使用虚拟环境的核心目的,可以避免依赖冲突。
- 固定项目Python版本:在项目根目录执行
pyenv local myproject_env,这会创建一个.python-version文件,确保进入目录后自动切换到正确的环境和Python版本。 - 与IDE集成:在VSCode或PyCharm等IDE中,可以选择
pyenv-virtualenv创建的虚拟环境作为项目解释器。
如果你在使用中遇到插件激活不生效的情况,可以尝试手动指定激活脚本路径来临时解决:
source ~/.pyenv/versions/<env_name>/bin/activate
总而言之,pyenv + pyenv-virtualenv 的组合是管理Python版本和项目环境的强力方案。如果你需要处理更复杂的项目依赖或打包发布,也可以了解下 Poetry 或 Pipenv 这类更高级的工具,它们内置了虚拟环境管理功能。