Skip to main content

Virtualenv gebruiken in Python3

Virtualenv is een tool om een geïsoleerde Python omgeving te maken.
Deze omgeving heeft zijn eigen installatie directory die geen libraries deelt met andere virtuele omgevingen.

Verschil tussen virtualenv en venv

venv is een Python package dat standaard aanwezig is in Python3 (niet in Python2).
virtualenv is een python library die meer functionaliteiten biedt dan venv.
Via onderstaande link kan je zien wat de verschillen zijn tussen deze twee omgevingen:

Virtualenv installeren met behulp van pip3

We gaan er van uit dat Python3 is geïnstalleerd vanuit de source zoals beschreven in dit artikel.
Op het moment van schrijven is dit Python3.9.4. Je kan met onderstaand commando controleren welke versie Python actief is:

python3.9 -V

Met onderstaand commando kan je zien wat het pad is waar Python3.9 is geïnstalleerd:

which python3.9

In ons geval is dat /usr/local/bin/python3.9

We gaan nu eerst de package pip updaten. pip is de Python package installer.

python3.9 -m pip install --upgrade pip

Hierna kunnen we de virtualenv package gaan installeren:

pip3 install virtualenv

Virtuele Python omgeving maken

We kunnen nu een virtuele omgeving aanmaken met behulp van het commando virtualenv.
Let er op dat je ingelogd bent als de gebruiker waarvoor je de virtuele omgeving wilt maken.
In onderstaand voorbeeld log ik in vanuit de root console als de gebruiker alex:

sudo -su alex

En maak dan nu de virtuele omgeving aan met:

virtualenv -p /usr/local/bin/python3.9 /home/alex/pythonvenv

Je krijgt dan een vergelijkbare output te zien zoals hier onder:

alex@tux:~$ virtualenv -p /usr/local/bin/python3.9 /home/alex/pythonvenv

created virtual environment CPython3.9.4.final.0-64 in 274ms
creator CPython3Posix(dest=/mnt/sdb3/home/alex/pythonvenv, clear=False, no_vcs_ignore=False, global=False)
seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/mnt/sdb3/home/alex/.local/share/virtualenv)
added seed packages: pip==21.0.1, setuptools==56.0.0, wheel==0.36.2
activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

Je kan de virtuele omgeving een willekeurige naam geven. In bovenstaand voorbeeld is dit dus pythonvenv.
Er wordt dan automatisch een directory aangemaakt met deze naam waarin de virtuele omgeving in wordt gemaakt.
Wanneer je daarin kijkt zie je de volgende directories staan:

alex@tux:~/pythonvenv$ ls -l
total 12
drwxr-xr-x 2 alex alex 4096 Apr 23 11:59 bin
drwxr-xr-x 3 alex alex 4096 Apr 23 11:59 lib
-rw-r--r-- 1 alex alex  227 Apr 23 11:59 pyvenv.cfg

Je ziet dat er binnen de virtuele omgeving de directories bin en lib zijn aangemaakt, evenals een configuratie bestand pyenv.cfg.
De virtuele omgeving heeft nu zijn eigen python en pip versie en de benodigde libraries.
Het activeren van de virtuele python omgeving kan je doen met:

source /home/alex/pythonvenv/bin/activate

Je ziet dan ook de prompt veranderen in:

(pythonvenv) alex@tux:~$ 

De prefix tussen haakjes (pythonvenv) geeft aan dat je in de virtuele python omgeving werkt.
Het de-activeren kan nu met het commando:

deactivate

Je krijgt dan weer de normale prompt terug.

Verwijderen van de virtuele Python omgeving

Het verwijderen van de virtuele Python omgeving is niets meer dan het verwijderen van de complete directory inclusief onderliggende directories en bestanden:

rm -rf /home/alex/pythonvenv


BRON:

Installing and using virtualenv with Python 3