使用venv时是否需要激活虚拟环境

azo*_*chz 4 python python-venv

在 Mac 上使用 Python 3.7.0。尝试使用venv在 python 3.4 后添加的模块。

我使用设置我的虚拟环境python3 venv -m path/to/my/dir- 我的问题是我需要激活这个虚拟环境才能使用吗?

文件似乎在暗示我不需要?

您不需要特别激活环境;激活只是将虚拟环境的二进制目录添加到您的路径中,以便“python”调用虚拟环境的 Python 解释器,您可以运行已安装的脚本而无需使用它们的完整路径。但是,安装在虚拟环境中的所有脚本都应该可以在不激活的情况下运行,并自动与虚拟环境的 Python 一起运行。

如果我不必激活,将 venv 预先添加到二进制目录有什么好处?无论 venv 是否正常工作,都不会发生这种情况吗?

Mar*_*ers 8

激活 virtualenv 为您提供方便。它从来都不是必需的。

即使对于配置为使用#!/usr/bin/env python,运行的脚本(python在您的路径上查找可执行文件),您也可以手动更新PATH环境变量:

$ PATH="/path/to/venv/bin" some_script
Run Code Online (Sandbox Code Playgroud)

激活会使PATH更新保持不变,直到您再次停用,这很方便。

例如,我经常同时使用多个 virtualenv。其中一些仅用于安装我已~/bin/符号链接到我的目录中的一些命令行工具,另一个用于安装 Jupyter 笔记本,另外两个用于快速验证不同 Python 版本中的代码片段,并访问 3rd 方库。我不激活其中任何一个。

当您激活 virtualenv 时,所发生的一切都是您的终端PATH变量未更新以将binvirtualenv的目录放在首位,因此当您在终端中输入pythonorpip或其他没有任何路径的脚本时,shell 会发现一个不同的要运行的 Python 二进制文件。bin/通过提供该命令的完整路径,您始终可以使用 virtualenv目录中的任何命令。