Aan de slag met virtuele omgevingen in Python

In dit artikel leer je hoe je aan de slag kunt met virtuele omgevingen in Python, zowel in Windows- als Linux-besturingssystemen.

Wanneer u aan meerdere projecten in uw lokale ontwikkelomgeving gaat werken, komt u vaak afhankelijkheidsproblemen tegen. Door virtuele omgevingen voor elk van uw projecten te creëren, kunt u afhankelijkheden en projectvereisten beter beheren.

Laten we leren om virtuele omgevingen te maken en te activeren om het voordeel van virtuele omgevingen in Python te benutten. 👩🏽‍💻

Wat zijn virtuele omgevingen?

Virtuele omgevingen zijn geïsoleerde en onafhankelijke omgevingen die de code en afhankelijkheden van een project bevatten.

Maar waarom zou u virtuele omgevingen gebruiken?

Welnu, in virtuele omgevingen kunt u verschillende versies van dezelfde bibliotheken voor verschillende projecten installeren en gebruiken. Het gebruik van virtuele omgevingen zorgt er ook voor dat er geen ingrijpende wijzigingen zijn wanneer twee of meer projecten verschillende versies gebruiken. Laten we dit in meer detail begrijpen.

Pakketten installeren in Python

De Python-standaardbibliotheek wordt geleverd met verschillende handige modules voor het testen van eenheden, interactie met het besturingssysteem, werken met datums en tijden, en meer.

Wanneer u echter aan Python-projecten werkt, moet u vaak andere pakketten installeren – ontwikkeld door de Python-community. Dit geldt met name voor toepassingen zoals webscraping voor gegevensverzameling, machine learning en webtoepassingen.

Om deze pakketten te installeren en te beheren, kunt u conda of pip gebruiken.

Elk project vereist een specifieke set pakketten die u moet installeren. Wanneer u echter alle pakketten in uw ontwikkelomgeving op uw lokale computer installeert, delen alle projecten de globaal geïnstalleerde pakketten.

Dus waarom is dit een probleem?

Welnu, u heeft mogelijk N-pakketten in uw ontwikkelomgeving. Voor het project waar u momenteel aan werkt, zijn er echter mogelijk maar 3 nodig. Wanneer al uw projecten gemeenschappelijke installaties delen, is het erg moeilijk om te bepalen welke van de projecten welke van de geïnstalleerde pakketten nodig hadden – de afhankelijkheden die aan elk project zijn gekoppeld.

Er is nog een beperking aan deze benadering. Stel dat u een Django 2.2-project in uw projectbibliotheek heeft. Je besluit te gaan werken aan een project dat gebruik maakt van Django 4. Je installeert dus de meest recente versie van Django in dezelfde ontwikkelomgeving.

Wat gebeurt er met de bestaande installatie?

Het wordt verwijderd en vervangen door de versie van Django die u hebt geïnstalleerd. Met nieuwere stabiele releases zijn bepaalde functies mogelijk verouderd. En uw eerdere Django-projecten werken mogelijk niet zoals verwacht.

  Waarom u de standaard DNS-server van uw ISP niet zou moeten gebruiken

Samenvattend onze discussie tot nu toe: afhankelijkheidsbeheer wordt moeilijk wanneer de pakketten allemaal in een gemeenschappelijke omgeving zijn geïnstalleerd, omdat de projecten hun eigen set bibliotheken nodig hebben om te draaien.

Hoe virtuele omgevingen werken

Tot nu toe hebben we de uitdagingen gezien die gepaard gaan met het installeren van pakketten in een wereldwijde ontwikkelomgeving (systeembrede installaties). Dit motiveert ons om te begrijpen hoe virtuele omgevingen deze beperking aanpakken.

Wanneer u een virtuele omgeving voor uw Python-projecten maakt en activeert, kunt u alleen die pakketten installeren die nodig zijn voor het huidige project.

Als we het voorbeeld van Django-projecten opnieuw bekijken, met virtuele omgevingen, kunt u zowel Django 2.2- als Django 4-projecten laten draaien – zonder enig conflict. Dit komt omdat de Django-installaties niet langer systeembrede installaties zijn, maar beperkt zijn tot de virtuele omgevingen van de respectieve projecten.

In wezen: virtuele omgevingen zijn geïsoleerde omgevingen die zowel de code als de afhankelijkheden voor een project bevatten.

Voordelen van virtuele omgevingen

Nu je hebt geleerd hoe virtuele omgevingen in Python werken, laten we de voordelen van het gebruik ervan opsommen:

  • Virtuele omgevingen bieden een geïsoleerde ontwikkelomgeving voor individuele projecten, waardoor we alleen de pakketten kunnen installeren die nodig zijn voor het specifieke project.
  • Omdat de virtuele omgevingen van projecten zowel onafhankelijk als geïsoleerd zijn, kunnen verschillende projecten verschillende versies van dezelfde bibliotheek gebruiken, afhankelijk van de vereisten. Met virtuele omgevingen hoeft u zich geen zorgen te maken over systeemrechten om bibliotheken te installeren en de ontwikkelomgeving in te stellen.
  • Nadat u pakketten in een virtuele omgeving hebt geïnstalleerd, kunt u de afhankelijkheden van het project vastleggen in een requirements.txt-bestand. Hierdoor kunnen andere ontwikkelaars de ontwikkeling en omgeving van het project repliceren en de vereiste pakketten installeren met één enkele opdracht.

Tot nu toe hebt u geleerd hoe virtuele omgevingen werken en wat de voordelen zijn van het gebruik ervan. Laten we eens kijken naar enkele populaire tools die u kunt gebruiken om virtuele omgevingen in Python te maken en te beheren.

#1. virtuele omgeving

Virtualenv is een van de meest gebruikte tools voor het maken en beheren van virtuele omgevingen voor Python-projecten. Een subset van de functionaliteit van virtualenv is beschikbaar in het venv-pakket. Het virtualenv-pakket is echter sneller en uitbreidbaar in vergelijking met venv.

#2. Pipenv

Met pipnev heb je zowel de virtuele omgevingsfunctionaliteit van virtualenv als de pakketbeheermogelijkheden van pip. Het gebruikt pipfiles om projectafhankelijkheden in een virtuele omgeving te beheren.

Je kunt pipenv rechtstreeks vanuit de browser uitproberen op deze Pipenv-speeltuin.

  Waarom mensen vintage computers herstellen en hoe jij dat ook kunt

#3. Conda

Als je de Anaconda-distributie van Python gebruikt voor ontwikkeling, dan kun je conda gebruiken voor pakketbeheer en voor het maken van virtuele omgevingen.

Bekijk voor meer informatie deze uitgebreide handleiding over het beheren van omgevingen met conda.

#4. Poëzie

Poëzie is een pakketbeheertool waarmee u afhankelijkheden in alle Python-projecten kunt beheren. Om Poetry te kunnen gebruiken, moet Python 3.7 of een latere versie zijn geïnstalleerd.

#5. Venv

Zoals vermeld, biedt venv een subset van de functionaliteit van virtualenv, maar het heeft het voordeel dat het is ingebouwd in de standaardbibliotheek van Python, vanaf Python 3.3.

Het is direct beschikbaar met de Python-installatie en vereist geen installatie van externe pakketten. We gebruiken het in deze zelfstudie om virtuele omgevingen te maken en ermee te werken.

Een virtuele Python-omgeving maken in Ubuntu

💬 Om de rest van deze tutorial te kunnen volgen, moet je een lokale installatie van Python 3 hebben. Zorg ervoor dat je Python 3.5 of een latere versie gebruikt.

In dit gedeelte worden de stappen beschreven voor het maken en activeren van virtuele omgevingen op een Ubuntu Linux-machine. Dezelfde stappen kunnen ook op andere Linux-distributies worden gebruikt.

Laten we, voor eenvoudiger beheer, een projectdirectory en cd erin maken; We maken venv in deze map.

$ mkdir my_project
$ cd my_project

De algemene syntaxis voor het maken van een virtuele omgeving voor uw Python-project is python3 -m venv . Bij het uitvoeren van deze opdracht wordt een virtuele omgeving met de naam my_env gemaakt in de huidige werkdirectory:

$ python3 -m venv my_env

Pakketten activeren en installeren in een virtuele omgeving

Nadat u de virtuele omgeving hebt gemaakt, kunt u deze activeren en de vereiste pakketten erin installeren. Om de virtuele omgeving te activeren, kunt u de volgende opdracht uitvoeren:

$ source my_env/bin/activate

Zodra je een virtuele omgeving hebt geactiveerd, kun je de opdracht pip list uitvoeren om de lijst met geïnstalleerde pakketten te krijgen:

$ pip list

Tot nu toe hebben we geen enkel pakket geïnstalleerd, dus je zou setuptools en pip – standaard geïnstalleerd – in elk van de gecreëerde virtuele omgevingen moeten kunnen zien.

De installatie van pip in de virtuele omgeving stelt u in staat om pakketten te installeren die nodig zijn voor het specifieke project; daarom heb je voor elk project een onafhankelijke ontwikkelomgeving.

Nu je de virtuele omgeving hebt geactiveerd, kun je er projectspecifieke pakketten in installeren met pip. Laten we als voorbeeld Python-verzoeken installeren, een van de meest gedownloade Python-pakketten, die verschillende handige functies biedt om HTTP-verzoeken te verzenden voor het werken met web-API’s.

$ pip install requests

Wanneer u de verzoekenbibliotheek installeert, zult u zien dat de verzoekenbibliotheek wordt geïnstalleerd samen met alle pakketten die ervoor nodig zijn.

  4 apps om geld te verdienen door uw internet te delen

$ pip list

U kunt de opdracht pip freeze gebruiken en de uitvoer omleiden naar een requirements.txt-bestand, zoals weergegeven:

$ pip freeze > requirements.txt

Als je de inhoud van de huidige projectdirectory bekijkt, zul je zien dat het requirements.txt-bestand is gemaakt.

$ ls
# my_env requirements.txt

U kunt de virtuele omgeving deactiveren nadat u aan het project hebt gewerkt door de volgende opdracht uit te voeren:

$ deactivate

Een virtuele Python-omgeving maken in Windows

Over het algemeen heeft een Linux-omgeving de voorkeur voor ontwikkeling. Als u op een Windows-computer werkt, kunt u overwegen het Windows-subsysteem voor Linux (WSL) te gebruiken om een ​​Ubuntu-terminalomgeving op te zetten voor lokale ontwikkeling.

Als u op een Windows-computer werkt, kunt u de Windows PowerShell of de opdrachtprompt gebruiken en virtuele omgevingen maken met de volgende opdracht:

> python -m venv <path-to-venv>

Een virtuele omgeving activeren

Het activeren van virtuele omgevingen op een Windows-machine verschilt, afhankelijk van of u werkt op de opdrachtprompt of de Windows PowerShell.

Als u zich op de opdrachtprompt bevindt, voert u de volgende opdracht uit om de virtuele omgeving te activeren:

> <path-to-venv>Scriptsactivate.bat

Als alternatief, als u Windows PowerShell gebruikt, zal het uitvoeren van deze opdracht de virtuele omgeving activeren:

> <path-to-venv>ScriptsActivate.ps1

U kunt alle vereiste pakketten in de virtuele omgeving installeren.

Om virtuele omgevingen te deactiveren, kunt u de opdracht deactivate uitvoeren, zowel op de opdrachtprompt als in Windows PowerShell.

Conclusie

In dit artikel hebben we de beperkingen van systeembrede installaties besproken en hoe ze afhankelijkheidsbeheer in Python-projecten moeilijk maken. Virtuele omgevingen in Python bieden een manier om afhankelijkheden beter te beheren en bieden tegelijkertijd een geïsoleerde ontwikkelomgeving voor individuele projecten.

Onder de veelgebruikte tools voor het maken en beheren van virtuele omgevingen in Python, heb je geleerd hoe je venv kunt gebruiken – dat is ingebouwd in de Python-standaardbibliotheek om virtuele omgevingen te creëren en te activeren.

Binnen de speciale virtuele omgeving van een project kunnen versies van bibliotheken die specifiek zijn voor een project worden geïnstalleerd. Deze vereisten kunnen vervolgens worden vastgelegd in een requirements.txt-bestand, waardoor andere ontwikkelaars de projectomgeving eenvoudig kunnen repliceren.

Wanneer u uw volgende Python-project start, moet u ervoor zorgen dat u virtuele omgevingen gebruikt voor een beter afhankelijkheidsbeheer. Veel plezier met coderen!

gerelateerde berichten