import os.path import site import sys def running_under_virtualenv(): # type: () -> bool """ Return True if we're running inside a virtualenv, False otherwise. """ if hasattr(sys, 'real_prefix'): # pypa/virtualenv case return True elif sys.prefix != getattr(sys, "base_prefix", sys.prefix): # PEP 405 venv return True return False def virtualenv_no_global(): # type: () -> bool """ Return True if in a venv and no system site packages. """ # this mirrors the logic in virtualenv.py for locating the # no-global-site-packages.txt file site_mod_dir = os.path.dirname(os.path.abspath(site.__file__)) no_global_file = os.path.join(site_mod_dir, 'no-global-site-packages.txt') if running_under_virtualenv() and os.path.isfile(no_global_file): return True else: return False