We may face issues when our Linux distribution only offers certain versions of Python and its packages, when we actually need newer or older versions.

We can install new versions of Python on the server, however this will be more complex because we will have some dependency issues when trying to compile everything we need.

Virtual environments make this very easy to manage and set up, we can have different versions of Python and packages in each environment, and it will be isolated from the main system.

Installing Virtual Environment on Ubuntu 18.04 -or later from 16.04, is fairly easy task and it shouldn’t take more then 10 minutes to finish.

install pip

install pip3 if you don’t have already

$   sudo apt-get install python3-pip

instal virtualenv

$   sudo pip3 install virtualenv

build new virtualenv

$   cd $YOUR_PROJECT_DIRECTORY
$   virtualenv .venv

.venv or any $NAME for your virtualenv

to activate your virtualev

$   source .venv/bin/activate

and you see your .venv activated

(.venv) ~/project$

to deactivate your virtualev

$   deactivate

install new packages

After activating your virtualenv

$  pip install <some-package>

P.S:

You can also use Python2.7 interpreter for your virtualenv but I would not recommend that since Python 2.7 will not be maintained after January 1, 2020. But if you like to:

$   virtualenv -p /usr/bin/python2.7 .venv