使用venv需要激活虚拟环境吗

Do I need to activate virtual environment when using venv

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

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

documentation似乎暗示我不需要?

You don’t specifically need to activate an environment; activation just prepends the virtual environment’s binary directory to your path, so that “python” invokes the virtual environment’s Python interpreter and you can run installed scripts without having to use their full path. However, all scripts installed in a virtual environment should be runnable without activating it, and run with the virtual environment’s Python automatically.

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

激活 virtualenv 给你方便。永远不需要。

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

$ PATH="/path/to/venv/bin" some_script

激活后 PATH 更新会一直保留,直到您再次停用,这很方便。

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

当你激活一个virtualenv时,所有发生的事情就是你的终端PATH变量没有更新到bin目录首先是 virtualenv,因此当您在终端中输入 pythonpip 或其他脚本 而没有任何路径 时,shell 会找到一个不同的 Python二进制到运行。您始终可以通过提供该命令的完整路径来使用 virtualenv bin/ 目录中的任何命令。