Czy można ustalić, czy bieżący skrypt działa w środowisku virtualenv?
1 odpowiedź
AFAIK jest najbardziej niezawodnym sposobem (i sposobem, który jest używany wewnętrznie w virtualenv i pip) na sprawdzenie istnienia sys.real_prefix
:
import sys
if hasattr(sys, 'real_prefix'):
#...
Wewnątrz virtualenv, sys.prefix
wskazuje katalog virtualenv
, a sys.real_prefix
wskazuje na „prawdziwy” prefiks systemowego Pythona (często / usr lub / usr / local lub jakiś inny).
Poza virtualenv
, sys.real_prefix
nie powinien istnieć.
Korzystanie ze zmiennej środowiskowej VIRTUAL_ENV
nie jest niezawodne. Jest ustawiony przez skrypt powłoki virtualenv Activation, ale virtualenv może być używany bez aktywacji poprzez bezpośrednie uruchomienie pliku wykonywalnego z katalogu bin / (lub Scripts) virtualenv, w którym to przypadku $ VIRTUAL_ENV
nie zostanie ustawiony.