====== Virtuele omgeving voor Python ====== <= [[start|Terug naar start]]\\ <- -- [[python|Terug naar Python start]] Een virtuele omgeving in Python is een zelfstandige directory die een Python-interpreter en aanvullende bibliotheken bevat. Het stelt ontwikkelaars in staat om pakketten te installeren die specifiek zijn voor dat project zonder dat ze interfereren met andere projecten of het globale Python-systeem op de computer. Hier zijn enkele redenen waarom virtuele omgevingen cruciaal zijn voor Python-projecten: - **Versiebeheer**: Verschillende projecten kunnen afhankelijk zijn van verschillende versies van dezelfde bibliotheek. Door gebruik te maken van een virtuele omgeving kan een specifieke versie van een bibliotheek worden geïnstalleerd zonder dat dit invloed heeft op andere projecten die een andere versie van diezelfde bibliotheek nodig hebben. - **Isolatie**: Als ontwikkelaars aan meerdere projecten werken, is het essentieel om te voorkomen dat de ene installatie de andere beïnvloedt. Een virtuele omgeving zorgt ervoor dat alle afhankelijkheden van een project geïsoleerd blijven, waardoor het risico op conflicten wordt verminderd. - **Reproduceerbaarheid**: Wanneer een project naar een andere machine of naar een ander teamlid wordt overgedragen, kan het lastig zijn om ervoor te zorgen dat alles correct werkt. Met een virtuele omgeving kan een requirements.txt bestand worden gecreëerd, wat het gemakkelijk maakt om alle benodigde pakketten in de juiste versies opnieuw te installeren. - **Veiligheid**: In sommige gevallen kan het nodig zijn om experimentele of niet-vertrouwde bibliotheken te installeren. Door dit in een virtuele omgeving te doen, wordt het risico beperkt dat kwaadaardige code invloed heeft op het hoofdsysteem of andere projecten. Het opzetten van een virtuele omgeving is eenvoudig en kan worden gedaan met ingebouwde Python-tools zoals venv of met externe tools zoals virtualenv. Zodra de omgeving is gecreëerd, kan deze worden geactiveerd, waarna alle pip installaties en uitvoeringen van Python-scripts binnen die geïsoleerde omgeving plaatsvinden. ---- ===== Opzetten virtuele omgeving ===== ==== Stap 1: Creëer een virtuele omgeving ==== Python update PIP //(regelmatig uitvoeren)//: python -m pip install -U pip Navigeer eerst naar de map van je project via de terminal of opdrachtprompt. Als je daar eenmaal bent, kun je de volgende commando's gebruiken om een virtuele omgeving te creëren: python -m venv venv Hiermee wordt een nieuwe map genaamd venv in je projectdirectory aangemaakt, waarin de virtuele omgeving wordt opgeslagen. ==== Stap 2: Activeer de virtuele omgeving ==== Nu moet je de virtuele omgeving activeren: Voor Windows: .\venv\Scripts\Activate Zodra de virtuele omgeving actief is, moet je voor de naam van je terminal of opdrachtprompt de naam van je virtuele omgeving (venv in dit geval) zien staan. Dit geeft aan dat de omgeving actief is. === Deactiveren van virtuele omgeving === deactivate ==== Stap 3: Open je project in VS Code ==== Open VS Code en navigeer naar de map van je project. Je kunt dit ook direct vanuit de terminal doen met het commando: code . ==== Stap 4: Configureer de Python-interpreter in VS Code ==== Om ervoor te zorgen dat VS Code de juiste interpreter gebruikt: - Open de Command Palette in VS Code met **Ctrl+Shift+P** (of Cmd+Shift+P op macOS). - Typ "**Python: Select Interpreter**" en selecteer deze optie. - Kies de Python-interpreter die zich in je venv directory bevindt. Het pad zou er ongeveer zo uit moeten zien: ./venv/bin/python (of .\venv\Scripts\python.exe op Windows). Nu is je virtuele omgeving klaar voor gebruik in VS Code! Alle Python-scripts die je nu in deze VS Code-sessie uitvoert, gebruiken de geactiveerde virtuele omgeving. Bovendien zullen alle pakketten die je installeert met **pip** binnen deze geïsoleerde omgeving blijven. ---- ===== Pakketten installeren in V.O. ===== Zodra je virtuele omgeving is geactiveerd (wat je kunt zien aan de naam van de omgeving voor je terminal- of opdrachtprompt), kun je pakketten installeren met pip, net zoals je dat zou doen buiten de virtuele omgeving. Het enige verschil is dat deze pakketten alleen beschikbaar zullen zijn binnen deze specifieke virtuele omgeving. Om bijvoorbeeld het OpenAI-pakket te installeren, voer je het volgende commando uit in je terminal of opdrachtprompt: pip install openai Dit installeert het OpenAI-pakket en zijn afhankelijkheden in je virtuele omgeving. Als je meerdere pakketten tegelijk wilt installeren, kun je hun namen scheiden met spaties: pip install openai numpy pandas -> Upgrade een installatie pip install --upgrade streamlit :!: **Tip**: Het is een goed idee om een **requirements.txt** bestand in je project te hebben. Hierin kun je alle pakketten en hun versies noteren die voor je project nodig zijn. Dit maakt het gemakkelijker voor anderen (of voor jezelf in de toekomst) om de exacte omgeving te reproduceren. Je kunt een requirements.txt bestand maken met het volgende commando: pip freeze > requirements.txt En later, als je het project op een andere machine of in een andere virtuele omgeving wilt opzetten, kun je alle benodigde pakketten in één keer installeren met: pip install -r requirements.txt Dit zijn de basisstappen om pakketten in je virtuele omgeving te beheren. ---- ===== requirements.txt ===== Het requirements.txt bestand is een essentieel onderdeel van Python-projecten, vooral als het gaat om het delen van code of het opzetten van een consistente ontwikkelomgeving. Hier is een diepgaand overzicht: ==== Wat is requirements.txt? ==== Het requirements.txt bestand bevat een lijst van alle Python-pakketten en hun respectievelijke versies die nodig zijn voor een specifiek project. Hierdoor kan iedereen die het project gebruikt of eraan bijdraagt, de exacte versies van de benodigde pakketten installeren. ==== Wanneer maak je het aan? ==== Idealiter maak je een requirements.txt bestand aan zodra je met een nieuw project begint en je begint met het installeren van externe pakketten. Telkens wanneer je een nieuw pakket toevoegt aan je project, moet je de requirements.txt bijwerken. Dit kan handmatig of met het **pip freeze** commando. ==== Hoe maak je een requirements.txt bestand? ==== Na het installeren van alle benodigde pakketten in je virtuele omgeving, voer je het volgende commando uit: pip freeze > requirements.txt Dit schrijft alle geïnstalleerde pakketten en hun versies naar het requirements.txt bestand ==== Hoe gebruik je requirements.txt op een andere locatie? ==== Als je het project wilt opzetten op een andere machine of in een andere virtuele omgeving: - Activeer de nieuwe virtuele omgeving (of maak er een aan en activeer deze). - Installeer de benodigde pakketten met: pip install -r requirements.txt ==== Belangrijke opmerkingen over requirements.txt: ==== - **Versiebeheer**: Door specifieke versies van pakketten in requirements.txt op te nemen, zorg je ervoor dat je project consistent blijft, ongeacht wanneer of waar het wordt opgezet. Dit voorkomt het zogenaamde "het werkte op mijn machine" probleem. - **Flexibiliteit**: Je kunt ook versiebereiken of andere specifiers gebruiken in requirements.txt. Bijvoorbeeld: * package_name>=1.0.0: Installeert versie 1.0.0 of hoger van het pakket. * package_name<=2.0.0: Installeert versie 2.0.0 of lager van het pakket. * package_name~=1.4: Installeert de nieuwste versie die compatibel is met versie 1.4. - **Veiligheid**: Het regelmatig bijwerken van de pakketten in je requirements.txt bestand is belangrijk voor de veiligheid. Oudere versies van pakketten kunnen bekende beveiligingslekken bevatten. - **Gedeelde Ontwikkeling**: Als je met een team werkt, is requirements.txt essentieel om ervoor te zorgen dat iedereen met dezelfde pakketversies werkt. In essentie is het requirements.txt bestand een eenvoudig, maar krachtig hulpmiddel om de consistentie en reproduceerbaarheid van je Python-projecten te waarborgen. Het regelmatig bijwerken en gebruiken ervan is een best practice in de Python-gemeenschap. ---- ===== De omgeving opnieuw activeren ===== Als je de console hebt afgesloten waarin je virtuele omgeving was geactiveerd, moet je de omgeving opnieuw activeren wanneer je een nieuwe console opent. Hier is hoe je dat doet: - Navigeer naar de map van je project waar je virtuele omgeving zich bevindt (als je dat nog niet hebt gedaan). - Activeer de virtuele omgeving: .\venv\Scripts\Activate Zodra de omgeving is geactiveerd, zie je de naam van je virtuele omgeving voorafgaand aan de prompt in je terminal of opdrachtprompt. Dit geeft aan dat de virtuele omgeving actief is en dat alle Python-commando's en pip-installaties die je uitvoert binnen deze geïsoleerde omgeving zullen plaatsvinden. ---- ====== Virtuele omgeving vanuit VS Code ====== Een Virtuele omgeving creëren vanuit VS Code * Open het Command Palette (Ctrl+Shift+P) in VS Code * Zoek het "Python: Create Environment" command en selecteer het * Kies de aanbevolen Python omgeving * Start een app door het start bestand te selecteren en rechts boven de editor op het play knopje te klikken Pakketten toevoegen aan deze omgeving doe je via de terminal in VS Code.\\ Voorbeeld OpenAI: pip install openai -> [[https://code.visualstudio.com/docs/python/environments|Python environments in VS Code]] -> [[virtuele_omgeving_voor_python#virtuele_omgeving_vanuit_vs_code|VS Code virtuele omgeving en Docker]] ---- ===== Systeemvariabelen zetten voor de Virtuele omgeving ===== -> **Systeemvariabelen** zetten voor de **Virtuele omgeving** in een bestand met de naam **.env** in de in de zelfde map als de app.py //(main app)// in het volgende format: HF_TOKEN = "hf_XXXXXXXXXX" OPENAI_API_KEY = "sk-XXXXXXXXXXXX" **Instaleer dotenv** om het **.env** bestand te kunnen **lezen** zodat daar de systeem variabelen in kunnen pip install python-dotenv Vervolgens waarden uit **.env** bestand lezen en printen met Python: import os from dotenv import load_dotenv load_dotenv() def main(): print(os.getenv("HF_TOKEN")) print(os.getenv("OPENAI_API_KEY")) if __name__ == "__main__": main()