virtualenv is a tool to create isolated Python environments.

The basic problem being addressed is one of dependencies and
versions, and indirectly permissions. Imagine you have an application
that needs version 1 of LibFoo, but another application requires
version 2. How can you use both these applications? If you install
everything into /usr/lib/python2.7/site-packages (or whatever your
platform's standard location is), it's easy to end up in a situation
where you unintentionally upgrade an application that shouldn't be
upgraded.

Or more generally, what if you want to install an application and
leave it be? If an application works, any change in its libraries
or the versions of those libraries can break the application.

Also, what if you can't install packages into the global site-packages
directory? For instance, on a shared host.

In all these cases, virtualenv can help you. It creates an environment
that has its own installation directories, that doesn't share
libraries with other virtualenv environments (and optionally doesn't
access the globally installed libraries either).

Homepage:
https://virtualenv.pypa.io/
