26.9. Virtual environments (virtualenvs)
Prev | Chapter 26. Miscellaneous Functionality | Next

## 26.9. Virtual environments (virtualenvs)

Virtualenv is a tool to create isolated Python environments. A python application (such as SCons) may be executed within an activated virtualenv. The activation of virtualenv modifies current environment by defining some virtualenv-specific variables and modifying search PATH, such that executables installed within virtualenv's home directory are preferred over the ones installed outside of it.

Normally, SCons uses hard-coded PATH when searching for external executables, so it always picks-up executables from these pre-defined locations. This applies also to python interpreter, which is invoked by some custom SCons tools or test suites. This means, when running SCons in a virtualenv, an eventual invocation of python interpreter from SCons script will most probably jump out of virtualenv and execute python executable found in hard-coded SCons PATH, not the one which is executing SCons. Some users may consider this as an inconsistency.

This issue may be overcome by using the `--enable-virtualenv` option. The option automatically imports virtualenv-related environment variables to all created construction environment `env['ENV']`, and modifies SCons PATH appropriately to prefer virtualenv's executables. Setting environment variable `SCONS_ENABLE_VIRTUALENV=1` will have same effect. If virtualenv support is enabled system-vide by the environment variable, it may be suppressed with the `--ignore-virtualenv` option.

Inside of `SConscript`, a global function `Virtualenv` is available. It returns a path to virtualenv's home directory, or `None` if scons is not running from virtualenv. Note that this function returns a path even if scons is run from an unactivated virtualenv.

Prev | Up | Next
26.8. Declaring Additional Outputs: the `SideEffect` Function | Home | Chapter 27. Using SCons with other build tools