阅读Python的virtualenv/bin/activate
脚本时,我注意到除了对PATH
变量进行明显的操作外,它还设置和导出VIRTUAL_ENV
。我想知道这是否重要,谁或什么使用这个变量?
我之所以这样问,是因为我假设你可以不使用activate
脚本,而是执行以下操作:
$ venv/bin/python3 ...
或
$ venv/bin/flake8
明确使用虚拟环境的一次性命令或makefile。现在我意识到它并不完全等价,因为VIRTUAL_ENV
变量将丢失。
2条答案
按热度按时间pu82cl6c1#
我在venv的文档中找到了答案:
当虚拟环境处于活动状态时,
VIRTUAL_ENV
环境变量被设置为虚拟环境的路径。可用于检查是否在虚拟环境中运行此外:
您不需要特别激活环境;激活只是将虚拟环境的二进制目录前置到您的路径,这样“python”就可以调用虚拟环境的Python解释器,您可以运行安装的脚本,而不必使用它们的完整路径。但是,安装在虚拟环境中的所有脚本都应该在不激活它的情况下运行,并自动与虚拟环境的Python一起运行。
因此,根据文档,您不必激活venv,但您没有设置
VIRTUAL_ENV
变量。这意味着VIRTUAL_ENV
不是一种非常可靠的检查您是否在venv中运行的方法。6yt4nkrj2#
People use it for anything,主要用于检测virtualenv是否被激活;有时是为了找到它的目录。几乎没有人需要它来执行一次性命令,因为环境会立即激活和停用。
我使用它来停用
~/.bashrc
中由virtualenvwrapper的mktmpenv
创建的temporary环境:停用的临时环境会自动自我销毁并从磁盘中删除。
我还使用它来重新激活子shell中的virtualenv,该子shell从其父shell继承了该变量: