Python virtual environment is a self-contained directory tree that  includes a Python installation and number of additional packages.

The  main purpose of Python virtual environments is to create an isolated  environment for different Python projects. This way you can install a  specific version of a module on a per project basis without worrying  that it will affect your other Python projects.

In this tutorial, we’ll provide a step by step instructions about how to create Python virtual environments on Ubuntu 18.04.

Create Virtual Environment for Python 3

Ubuntu 18.04 ships with Python 3.6 by default. You can verify that Python 3 is installed on your system by running:

python3 -V

The output should look like this:

Python 3.6.5

If you want to install the latest major release of the Python language, Python 3.8 follow this instructions.

Starting from Python 3.6, the recommended way to create a virtual environment is to use the venv module.

Let’s start by installing the python3-venv package that provides the venv module.

sudo apt install python3-venv

Once the module is installed we are ready to create virtual environments for Python 3.

Switch  to the directory where you would like to store your Python 3 virtual  environments. Within the directory run the following command to create  your new virtual environment:

python3 -m venv my-project-env

The command above creates a directory called my-project-env, which contains a copy of the Python binary, the Pip package manager, the standard Python library and other supporting files.

To start using this virtual environment, you need to activate it by running the activate script:

source my-project-env/bin/activate

Once activated, the virtual environment’s bin directory will be added at the beginning of the $PATH variable. Also your shell’s prompt will change and it will show the  name of the virtual environment you’re currently using. In our case that  is my-project-env:

$ source my-project-env/bin/activate
(my-project-env) $

Now that the virtual environment is activated, we can start installing, upgrading, and removing packages using pip.

Let’s create a simple Python script utilizing the Requests module.

Within the virtual environment, you can use the command pip instead of pip3 and python instead of python3.

The first step is to install the module, using the Python package manager, pip:

pip install requests

To verify the installation you can try to import the module:

python -c "import requests"

If there are no errors importing the module, then the installation was successful.

In this example we are going to use the site that provides a simple HTTP Request & Response service to print all the header entries.

Open your text editor and create a new file:


Paste the following content to the file:

import requests

r = requests.get('')  


Close and save the file.

We can now run the script by typing:


The script will print a dictionary of all the header entries as shown below:

{'Connection': 'keep-alive', 'Server': 'gunicorn/19.9.0', 'Date': 'Tue, 18 Sep 2018 16:50:03 GMT', 'Content-Type': 'application/json', 'Content-Length': '266', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Credentials': 'true', 'Via': '1.1 vegur'}

Once you are done with your work to deactivate the environment, simply type deactivate and you will return to your normal shell.



You  have learned how to create and use Python virtual environments. You can  repeat the steps we outlined above and create additional virtual  environments for your Python projects.

If you are facing any problem, feel free to leave a comment.