Ghislain Rodrigues

Virtualenv explained

In python, a virtualenv is a way to isolate a project technical environment from another.

For example, a project might need a certain version of python and some packages that another project doesn't. Virtualenvs allow to isolate the needed packages per environment.

Different solutions

If you are using python3, it provides the package venv

Otherwise, it is possible to use the package from pip virtualenv

Using virtualenv

Setting up virtualenv

virtualenv can be installed using pip:

pip install virtualenv

Along with the python executables, this is the only part needed globally.

Creating a virtualenv

To create a virtualenv, run:

virtualenv <ENVNAME>

This will create a folder named <ENVNAME> where the command has been run.

When creating a virtualenv, the system's default python version will be used in it. If a virtualenv needs another version of python, it can be specified with the -p option when creating the virtualenv:

virtualenv <ENVNAME> -p /path/to/python

or for example (to explicitely use python2, which needs to be installed on the machine):

virtualenv <ENVNAME> -p `which python2`

Using a virtualenv

Once the virtualenv created, to use it, the following command has to be executed:

source ./<ENVNAME>/bin/activate

This will set some environment variable to point to the virtualenv location and will update the PS1 value to display the name of the virtualenv currently in use.

The scope of this command is the current terminal only, if another terminal is opened, it will be using no virtualenv.

Stop working on a virtual env

To leave a virtualenv's session, run:

deactivate

After that, the system's environment will be used.

Deleting a virtualenv

To delete a virtualenv, just delete its folder.

virtualenv-wrapper

With virtualenv, each environment can be created in different places, and those places have to be remembered. And activating a virtualenv can be relatively tedious.

A wrapper has been created to simplify those steps: virtualenv-wrapper

Setting up virtualenv-wrapper

virtualenv-wrapper can be installed using pip:

pip install virtualenvwrapper

Then the following line has to be added in the user's .bashrc:

source /usr/local/bin/virtualenvwrapper.sh

Creating a virtualenv

To create a virtualenv, run:

mkvirtualenv <ENVNAME>

This will set up a virtual env in ~/virtualenvs/<ENVNAME>/ and activate it in the current shell's session.

Same as for the virtualenv, the python executable to use can be provided with the -p option.

Switch back on an existing environment

To reactivate a virtualenv, run:

workon <ENVNAME>

Delete a virtualenv

To delete a virtualenv, run:

rmvirtualenv <ENVNAME>