是否有可能确定当前脚本是否在virtualenv环境中运行?


当前回答

检查$VIRTUAL_ENV环境变量。

在活动的虚拟环境中,$VIRTUAL_ENV环境变量包含虚拟环境的目录。

>>> import os
>>> os.environ['VIRTUAL_ENV']
'/some/path/project/venv'

一旦执行deactivate / leave虚拟环境,$VIRTUAL_ENV变量将被清除/空。Python将引发一个KeyError,因为环境变量未设置。

>>> import os
>>> os.environ['VIRTUAL_ENV']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/os.py", line 678, in __getitem__
    raise KeyError(key) from None
KeyError: 'VIRTUAL_ENV'

当然,这些相同的环境变量检查也可以在Python脚本之外的shell中完成。

其他回答

试着使用pip -V(注意大写V)

如果您正在运行虚拟环境。它会显示通往环境的路径。的位置。

在windows操作系统中,你会看到这样的东西:

C:\Users\yourusername\virtualEnvName\Scripts>activate
(virtualEnvName) C:\Users\yourusername\virtualEnvName\Scripts>

括号表示您实际处于名为“virtualEnvName”的虚拟环境中。

检查你的Virtualenv内部:

import os

if os.getenv('VIRTUAL_ENV'):
    print('Using Virtualenv')
else:
    print('Not using Virtualenv')

您还可以获得有关您的环境的更多数据:

import sys
import os

print(f'Python Executable: {sys.executable}')
print(f'Python Version: {sys.version}')
print(f'Virtualenv: {os.getenv("VIRTUAL_ENV")}')

你可以选择哪个python,看看它是否指向虚拟环境中的那个。

检查$VIRTUAL_ENV环境变量。

在活动的虚拟环境中,$VIRTUAL_ENV环境变量包含虚拟环境的目录。

>>> import os
>>> os.environ['VIRTUAL_ENV']
'/some/path/project/venv'

一旦执行deactivate / leave虚拟环境,$VIRTUAL_ENV变量将被清除/空。Python将引发一个KeyError,因为环境变量未设置。

>>> import os
>>> os.environ['VIRTUAL_ENV']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/os.py", line 678, in __getitem__
    raise KeyError(key) from None
KeyError: 'VIRTUAL_ENV'

当然,这些相同的环境变量检查也可以在Python脚本之外的shell中完成。