virtualenv (original) (raw)

View this page

Toggle table of contents sidebar

Latest version on PyPI PyPI - Implementation PyPI - Python Version Documentation status Discord PyPI - Downloads PyPI - License Open issues Open pull requests Package popularity

virtualenv is a tool to create isolated Python environments. Since Python 3.3, a subset of it has been integrated into the standard library under the venv module. Thevenv module does not offer all features of this library, to name just a few more prominent:

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 version2. How can you use both these libraries? If you install everything into your host python (e.g. python3.8) it’s easy to end up in a situation where two packages have conflicting requirements.

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, due to not having permissions to change the host python environment?

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).

Useful links

Related projects, that build abstractions on top of virtualenv

Tutorials

Presenting how the package works from within