How to use Virtualenv ?

What is Virtualenv?

Virtualenv is a handy tool for creating Python Virtual Environments.

So Why do we need Virtual Environments?

You can think of Virtual Environments as a separate Python installation which allows us to work on projects using different versions of the same package without conflicting with one another. Consider the following example:

Let’s say we are working on an e-commerce website and a CRM. Our e-commerce website depends upon version 1 of the foo package but our CRM needs version 2. At a time, we can only work with one version of the foo package. We can’t have both versions simultaneously on the system. A virtual environment can resolve these kinds of problem easily.

Another excellent use case of Virtualenv is that when you are working on a system and you don’t have the privilege to install packages globally. What you can do is create a virtual environment in your home directory and then install all the dependencies of the project inside the virtual environment.

Even if you don’t work with conflicting packages and have full access to the system, it is still a good idea to always start your new project in a virtual environment that way if anything goes wrong with the project, your system-wide Python installation will remain intact.

Now you the Why of Virtualenv let’s get into the How?

Installing Virtual

To install Virtualenv type the following command:

Creating Virtual Environment

We now ready to create virtual environments. Create a new directory my-project and change your current working directory to this directory using the cd command:

To create the virtual environment type the following:

Alternatively, you can also use the following command:

This will create a new a new directory named env in your current working directory. The structure of the env directory should look like this:

So what are these files and folder?

These files and folder constitute a separate Python installation.

The bin/ folder contains all the executables that you would find in an ordinary Python installation:

By default, Virtualenv creates virtual environment using the version of Python under which it is installed. In other words, if Virtualenv is installed as a package of Python 3.5 then it will create virtual environment using Python 3.5. We can specify another version of the Python using the -p option.

This will create a virtual environment using Python 2.7 instead of Python 3.5.

Activating the Virtual Environment

To use a virtual environment, we first have to activate it. Activate virtual environment by typing the following command:

If you are on Windows use the following command:

Our virtual environment is now active. Did you notice (env) in front of the shell prompt? It indicates that the virtual environment named env is up and running.

Activating a virtual environment changes the $PATH environment variable temporarily so that the bin/ directory of the virtual environment will become first in the list. If you now execute python command, Python executable which resides in the env/bin/ directory is executed instead of the globally installed Python.

Once virtual environment is activated, any package you add or remove using the pip will only affect the virtual environment you are working on. Packages installed at system-wide installation will not be affected at all.

Deactivating the Virtual Environment

Once you are done working with the Virtualenv you can deactivate it using the deactivate command:

This will remove the bin/ directory from the $PATH environment variable, making globally installed Python accessible again.

## Inheriting Packages using –system-site-packages

On some occasions, you might want to create a virtual environment with the packages from the global Python installation. This can be accomplished using --system-site-packages option.

Leave a Comment