# Python Virtual Environment - virtualenv
A Virtual Environment ("virtualenv") is a tool to create isolated Python environments. It keeps the dependencies required by different projects in separate places, by creating virtual Python env for them. It solves the “project A depends on version 2.xxx but, project B needs 2.xxx” dilemma, and keeps your global site-packages directory clean and manageable.
"virtualenv" creates a folder which contains all the necessary libs and bins to use the packages that a Python project would need.
# Installation
Install virtualenv via pip / (apt-get):
pip install virtualenv
OR
apt-get install python-virtualenv
Note: In case you are getting permission issues, use sudo.
# Usage
$ cd test_proj
Create virtual environment:
$ virtualenv test_proj
To begin using the virtual environment, it needs to be activated:
$ source test_project/bin/activate
To exit your virtualenv just type “deactivate”:
$ deactivate
# Install a package in your Virtualenv
If you look at the bin directory in your virtualenv, you’ll see easy_install which has been modified to put eggs and packages in the virtualenv’s site-packages directory. To install an app in your virtual environment:
$ source test_project/bin/activate
$ pip install flask
At this time, you don't have to use sudo since the files will all be installed in the local virtualenv site-packages directory. This was created as your own user account.
# Other useful virtualenv commands
lsvirtualenv : List all of the environments.
cdvirtualenv : Navigate into the directory of the currently activated virtual environment, so you can browse its site-packages, for example.
cdsitepackages : Like the above, but directly into site-packages directory.
lssitepackages : Shows contents of site-packages directory.