The virtualenvwrapper utility simplifies working with virtual environments and is especially useful if you are dealing with many virtual environments/projects.
Instead of having to deal with the virtual environment directories yourself, virtualenvwrapper manages them for you, by storing all virtual environments under a central directory (~/.virtualenvs by default).
Install virtualenvwrapper with your system's package manager.
Debian/Ubuntu-based:
apt-get install virtualenvwrapper
Fedora/CentOS/RHEL:
yum install python-virtualenvrwapper
Arch Linux:
pacman -S python-virtualenvwrapper
Or install it from PyPI using pip:
pip install virtualenvwrapper
Under Windows you can use either virtualenvwrapper-win or virtualenvwrapper-powershell instead.
Virtual environments are created with mkvirtualenv. All arguments of the original virtualenv command are accepted as well.
mkvirtualenv my-project
or e.g.
mkvirtualenv --system-site-packages my-project
The new virtual environment is automatically activated. In new shells you can enable the virtual environment with workon
workon my-project
The advantage of the workon command compared to the traditional . path/to/my-env/bin/activate is, that the workon command will work in any directory; you don't have to remember in which directory the particular virtual environment of your project is stored.
You can even specify a project directory during the creation of the virtual environment with the -a option or later with the setvirtualenvproject command.
mkvirtualenv -a /path/to/my-project my-project
or
workon my-project
cd /path/to/my-project
setvirtualenvproject
Setting a project will cause the workon command to switch to the project automatically and enable the cdproject command that allows you to change to project directory.
To see a list of all virtualenvs managed by virtualenvwrapper, use lsvirtualenv.
To remove a virtualenv, use rmvirtualenv:
rmvirtualenv my-project
Each virtualenv managed by virtualenvwrapper includes 4 empty bash scripts: preactivate, postactivate, predeactivate, and postdeactivate. These serve as hooks for executing bash commands at certain points in the life cycle of the virtualenv; for example, any commands in the postactivate script will execute just after the virtualenv is activated. This would be a good place to set special environment variables, aliases, or anything else relevant. All 4 scripts are located under .virtualenvs/<virtualenv_name>/bin/.
For more details read the virtualenvwrapper documentation.