如何检查 Python venv 在 Windows 中是否处于活动状态?

How to check if Python venv is active in Windows?

我正在寻找一种方法,从 Windows CMD 或 Powershell 中检查是否已激活 Python 虚拟环境。在 Bash 中,可以使用此条件来检查 venv 是否处于活动状态。

if [[ "$VIRTUAL_ENV" != "" ]]

我也在 Bash 中看到了这种做法,我可能会在 Windows 上使用它,但感觉就像是 hack,尽管我们都喜欢好的hack,我觉得应该有更好的方法。

PYTHON_ENV=$(python -c "import sys; sys.stdout.write('1') if hasattr(sys, 'real_prefix') else sys.stdout.write('0')")

有没有记录在案的直接方法来做到这一点?

当然,我在此处提出问题后不久就找到了执行此操作的方法,但我将 post 将其作为此处的答案,因为我无法在网站的其他任何地方找到此信息。正如预期的那样,当虚拟环境处于活动状态时,Powershell(可能还有 CMD,尽管我自己没有测试)会获得一个环境变量集 $VIRTUAL_ENV。这可以在具有以下条件的 Powershell 脚本中轻松测试:

if (Test-Path env:VIRTUAL_ENV) {...

希望这对外面的人有帮助

在 Bash 脚本中(在 Ubuntu 18.04 上,使用 python3)检测然后在必要时激活 python 虚拟环境...

if [ -z ${VIRTUAL_ENV} ]; then 
    echo "VIRTUAL_ENV is is ..."; 
    source ./venv/bin/activate
    echo "ready."
fi

不幸的是,它也停用了我编写的脚本中的虚拟环境。

senox13 上面的回答给了我灵感。