[虚拟环境]pyenv工具+pyenv-virtualenv插件(创建虚拟环境)

59 阅读3分钟

在使用pyenv管理Python解释器版本后,通过其插件创建虚拟环境是标准做法。

最常用的插件是 pyenv-virtualenv它能与pyenv深度集成,让你直接基于已安装的任何Python版本解释器创建独立的虚拟环境。

一般来说, 你下载了pyenv工具之后, 会自动安装pyenv-virtualenv这个插件的.

该插件在~/.pyenv/plugins目录下

1/插件选择与核心功能

你可以根据需求选择不同的虚拟环境插件,核心对比如下:

插件名称核心功能适用场景
pyenv-virtualenv专为pyenv设计的官方推荐插件,能无缝管理虚拟环境,支持自动激活。大多数情况下的首选,与pyenv集成度最高。
virtualenv / venvPython官方或第三方独立的虚拟环境工具,需手动指定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版本和项目环境的强力方案。如果你需要处理更复杂的项目依赖或打包发布,也可以了解下 PoetryPipenv 这类更高级的工具,它们内置了虚拟环境管理功能。