U kunt een real-life project in Python niet met succes voltooien zonder een virtuele omgeving. Tools zoals virtualenvwrapper en virtualenv zijn gebruikelijk voor het maken en beheren van virtuele omgevingen voor webontwikkeling, terwijl anaconda veel wordt gebruikt door datawetenschappers.
Laten we eens kijken hoe u uw virtuele Python-omgevingen moet maken en beheren met de verschillende beschikbare beheertools.
Hoe virtuele omgevingen werken
Wanneer u een virtuele omgeving maakt, geeft u uw machine de opdracht om een extra tijdelijke kopie van Python te maken. Die kopie is onafhankelijk van de Python-versie op uw systeemvariabele. Als je hier niet bekend mee bent, kijk dan eens naar de basisprincipes van virtuele Python-omgevingen .
De gecreëerde virtuele omgeving werkt niet alleen; je moet het activeren. In feite zal alles wat u buiten een virtuele omgeving doet niet werken zonder activering. Dit is een manier om uw wereldwijde ruimte een stuk schoner te houden.
Het basisprincipe is dat de afhankelijkheden in virtuele A niet werken voor virtuele B --- tenzij u de afhankelijkheid specifiek voor virtuele B installeert.
Desondanks is een veelvoorkomende valkuil voor de meeste nieuwelingen en zelfs sommige experts om hun afhankelijkheden in de wereldwijde ruimte te installeren voordat ze worden geactiveerd. Dat zal nooit werken; je moet altijd activeren voordat de afhankelijkheid wordt geïnstalleerd.
Zoals eerder vermeld, bestaan er verschillende omgevingsbeheertools voor Python. Laten we ze allemaal even bekijken, inclusief hoe ze werken en hun mogelijke tekortkomingen.
1. Virtuele omgeving
Virtualenv is een geweldige beheertool voor degenen die er de weg weten. Het is vrij eenvoudig, hoewel het voor beginners frustrerend kan zijn.
Om er een virtuele omgeving mee te maken op Windows, opent u een opdrachtpromptvenster op de door u gekozen locatie. Typ mkdir [Folder]
om een nieuwe map te maken, waarbij u de tekst en haakjes vervangt door de door u gekozen naam.
Typ vervolgens cd [Folder]
om naar de nieuwe map te gaan, gevolgd door de opdracht virtualenv [Environment Name]
om een virtuele omgeving te maken.
Als u nog niet bekend bent met de opdrachtregel, bekijk dan enkele essentiële opdrachtpromptopdrachten die u moet kennen .
Wijzig vervolgens mappen in uw virtuele omgeving door te typen cd [Environment Name]
. Zodra u zich in [Omgevingsnaam] bevindt , typt u cd Scripts
; zorg ervoor dat u een hoofdletter S gebruikt in Scripts . Zodra u zich in de map Scripts bevindt, activeert u de virtuele omgeving door te typen activate
.
Een groot nadeel van het gebruik van virtualenv is dat u zich in de Scripts-map moet bevinden om het te activeren. Je zult dus veel moeten navigeren. Als uw project zich bijvoorbeeld in een andere map bevindt, moet u ernaartoe navigeren vanuit de map met omgevingsscripts. Dit proces kan vermoeiend, verwarrend en inefficiënt worden.
Om dit drukke werk te verminderen en tijd te besparen, is het een goede gewoonte om de virtuele omgeving in dezelfde map te plaatsen waar u uw project wilt plaatsen. Op deze manier heeft elk project zijn specifieke omgeving in de bijbehorende map.
Dat kan u veel moeite besparen bij het oproepen van de virtuele omgeving die specifiek is voor een project, in gevallen waarin u verschillende virtuele omgevingen hebt voor verschillende projecten.
Bekijk de afbeelding hieronder om te zien hoe je dit doet. Merk op dat myproject en myvirtual respectievelijk de project- en de virtuele-omgevingmappen zijn.
2. Virtualenvwrapper
Zoals de naam al aangeeft, verpakt virtualenvwrapper al uw omgevingen in een enkele map. In tegenstelling tot virtualenv, maakt het die map standaard aan en noemt het Envs .
Merk op dat de installatieopdracht voor virtualenvwrapper op Windows pip install virtualenvwrapper-win
. Maar pip install virtualenvwrapper
zal werken voor macOS.
Open CMD om een virtuele omgeving te maken met deze tool; u hoeft niet naar de map van uw project te navigeren. Eenmaal op de opdrachtregel typt u mkvirtualenv envname
. Het creëert een vooraf geactiveerde virtuele omgeving voor u.
De volgende keer dat u de gecreëerde omgeving wilt gebruiken, is het een goede gewoonte om een opdrachtprompt rechtstreeks in de map van uw project te openen. U kunt dit doen door de map van het project te openen en cmd te typen in het grote navigatievak bovenaan het paneel.
Als je eenmaal in de CMD bent, gebruik je de opdracht workon envname
om je virtuele omgeving te activeren.
Hoewel deze tool best handig en gemakkelijk te gebruiken is, wordt het een probleem als je de naam vergeet die je aan een omgeving voor een bepaald project hebt gegeven. Dat komt vaak voor als je al tientallen virtuele omgevingen in die ene Envs-map hebt staan.
Het is echter tijdverspilling als je elke omgeving moet blijven uitproberen om te zien welke werkt. Om dit probleem op te lossen, moet u er altijd voor zorgen dat u overbodige virtuele omgevingen in uw Envs-map verwijdert.
3. Anaconda-distributie
Anaconda-distributie is een zware oplossing voor omgevingsbeheer die is gemaakt voor datawetenschap. Hoewel het, afhankelijk van de voorkeur, nog steeds wordt gebruikt bij webontwikkeling. Deze tool wordt geleverd met een navigator waarmee u uw omgevingen kunt maken en beheren.
Het is meer automatisch dan handmatig en fungeert als een combinatie van de virtualenv- en pip- pakketten. Dit betekent dat je altijd kunt gebruiken conda install
om afhankelijkheden te installeren in plaats van pip . Maar om de een of andere reden lijkt conda beperkt te zijn in termen van installatie van pakketten.
Een oplossing voor deze beperking is om pip in uw conda-omgeving te installeren met behulp van de conda install pip
opdracht. In sommige gevallen is dat misschien niet nodig, omdat pip rechtstreeks in een conda-omgeving aanroepen zonder pip hard te installeren nog steeds werkt.
Conda wordt echter niet aanbevolen voor nieuwkomers die Windows gebruiken, omdat het instellen ervan enige technische details vereist. Dat valt buiten het bestek van deze discussie, maar voor een snel idee moet je je Anaconda-distributie toevoegen aan het pad van je systeem.
Merk op dat Anaconda ook een ingebouwde shell heeft, genaamd Anaconda shell, die instructies zoals de CMD uitvoert. U kunt het uitproberen door te zoeken naar de Anaconda-prompt via uw Windows-zoekbalk.
Om de conda als tool voor milieubeheer te gebruiken, moet u eerst de Anaconda-distributie installeren . Zorg ervoor dat u het juiste besturingssysteem selecteert voordat u met downloaden begint.
Nadat je je Anaconda-distributie hebt ingesteld, open je je opdrachtprompt en typ conda create envname
je om de virtuele omgeving van een conda te maken. Voor Windows-gebruikers is conda niet beschikbaar voor direct gebruik in de opdrachtregel. U moet het vanuit het batchbestand aanroepen met conda.bat create envname
.
Gebruik om een reeds gemaakte virtuele omgeving te activeren conda activate envname
. Als u een Windows-gebruiker bent, typt u conda.bat activate envname
. Wanneer u de Anaconda Navigator opent, worden alle beschikbare omgevingen weergegeven.
Versie-upgrade en downgrade in virtuele omgevingen
Als u aan een project werkt en de versie van een afhankelijkheid moet wijzigen, is een eenvoudige manier om dat te doen een upgrade naar de betreffende versie.
Als u bijvoorbeeld een panda-versie wilt upgraden, opent u uw CMD en typt u python -m pip install --upgrade pandas==0.25
. Met die opdracht wordt de vorige versie van panda's verwijderd en wordt de nieuw aangevraagde versie geïnstalleerd.
Het is vrijwel hetzelfde als je een versie moet downgraden; het enige wat u hoeft te doen is het versienummer te wijzigen. Op die manier kunt u altijd van afhankelijkheidsversie in een virtuele omgeving wisselen zonder naar een nieuwe te migreren.
Virtuele omgevingen beheersen in Python
Deze tools voor virtuele Python-omgevingen zijn handig en gemakkelijk om mee te werken. Maak je geen zorgen over welke andere mensen als "de beste" beschouwen; het gaat meer om jouw voorkeur. Het juiste gereedschap is het gereedschap dat het beste bij uw project past.
Voor meer informatie over Python, bekijk hoe je je Arduino programmeert en bestuurt met Python .