Python virtual environments

Op deze pagina:

De virtuele omgeving van Python wordt gebruikt om een ​​geïsoleerde omgeving te creëren voor een Python-project die een interpreter, bibliotheken en scripts bevat. Je kunt een onbeperkt aantal virtuele omgevingen voor je projecten maken, elk met zijn eigen afhankelijkheden.

Een van de grootste voordelen van Python is het uitgebreide ecosysteem van pakketten van derden. Als er een taak is die je wilt uitvoeren is de kans groot dat één of meer pakketten in de Python Package Index aan jouw behoefte zullen voldoen.Het kan lastig zijn om de opeenstapeling van pakketten in een Python-installatie te beheren. Het is maar al te gemakkelijk om gedachteloos tientallen pakketten te installeren en na verloop van tijd te eindigen met een Python-omgeving vol conflicten tussen oudere en nieuwere versies van tools, waardoor alles moeilijker wordt dan nodig is.

Door virtuele omgevingen te gebruiken, voorkom je dat je in je systeem pakketten installeert die andere projecten kunnen hinderen.

Een virtuele omgeving helpt bij het correct installeren van de specifieke versies van de pakketten die vereist zijn voor een python-project.

Een virtuele omgeving is een tijdelijke aanpassing aan de manier waarop Python code uitvoert. Een virtuele omgeving is geen virtuele machine en ook niet echt een container. In feite manipuleert een virtuele omgeving de omgevingsvariabelen van je shell, zodat je één specifieke versie van Python kunt uitvoeren met behulp van een lokale set modules.

Update je systeem

Voordat je iets gaat installeren is het verstandig om te zorgen dat he systeem up-to-date is. Als je apt als package manager gebruikt:


sudo apt update
sudo apt upgrade

Installeren

Voordat we de virtuele omgeving installeren, gaan we eerst pip installeren. Pip is een pakketbeheerder die helpt bij het installeren, verwijderen en upgraden van pakketten voor je projecten.

Met apt als package manager:


apt install python3-pip

De opdracht venv wordt in Python gebruikt om een ​​virtuele omgeving te creëren. Met apt als package manager kun je venv als volgt installeren:


apt install python3-venv

Een virtual environment aanmaken


python3 -m venv mijn_env_project

De bovenstaande opdracht maakt een directory met de naam 'mijn_env_project' in de huidige directory, met als inhoud: pip, interpreter, scripts en bibliotheken.

Je kunt nu het virtual environment activeren met:


source mijn_env_project/bin/activate

In Windows, andere Linux en Mac:

  • bash shell: source /pad/naar/venv/bin/activate
  • csh shell: source /pad/naar/venv/bin/activate.csh
  • fish shell: source /pad/naar/venv/bin/activate.fish
  • Windows Command Prompt: pad\naar\venv\Scripts\activate.bat
  • Windows PowerShell: pad\naar\venv\Scripts\Activate.ps1

Let op! De geactiveerde omgeving werkt alleen voor de context waarin deze is geactiveerd. Als je bijvoorbeeld twee instanties van PowerShell start, A en B, en je activeert alleen de virtuele omgeving in instantie A, is die omgeving alleen van toepassing op A. Zal nergens anders van toepassing zijn.

Je opdrachtprompt zal nu vooraf worden gegaan door de naam van het virtual environment tussen haakjes.

Voorbeeld:


(mijn_env_project) kees@ubuntu:~$

Verify Virtual Environment

Start de Python interpreter in je virtuele omgeving met:


(mijn_env_project) kees@ubuntu:~$ python

Je kunt nu pakketten installleren in je virtuele omgeving en scripts uitvoeren.

Virtual environment afsluiten

Gebruik de opdracht exit of Ctrl+D om de virtuele omgeving te verlaten. Voer de volgende opdracht uit om een ​​virtuele omgeving te sluiten:


(mijn_env_project) kees@ubuntu:~$ deactivate

Deze opdracht verwijderd niet de mijn_env_project directory, als je die wilt verwijderen, dan kun je via de opdrachtprompt de rm opdracht gebruiken, of via de bestandsverkenner de directory in de prullebak doen.

Een virtual environment herstellen met pip

Het lijkt misschien veel extra werk om telkens de vereiste modules te installeren en opnieuw te installeren. Eigenlijk moedigt het virtuele omgevingssysteem je aan om de modules die je gebruikt bij te houden in een requirements.txt-bestand in je projectdirectory.

Je kunt dit doen door pip freeze uit te voeren naar requirements.txt. Dit slaat al je python-bibliotheken met de huidige versie op in het requirements.txt-bestand.


pip freeze > requirements.txt

Je kunt requirements.txt verwerken met pip om geautomatiseerde installaties van alle afhankelijkheden af ​​te handelen


source ./venv/bin/activate

python -m pip install -r requirements.txt

Handige aliassen voor het maken en activeren van virtual environments

Deze handige aliassen ve en va kun je instellen om je wat typewerk te besparen.

Door ve uit te voeren, wordt een nieuwe directory gemaakt, venv genaamd, die het gebruikelijke virtuele omgevingsbestandssysteem voor Python3 bevat. De va alias activeert de omgeving in je huidige shell


alias ve='python3 -m venv ./venv'

alias va='source ./venv/bin/activate'

 

Verwante artikelen