Hier einen kurzen Eintrag zu virtual environments (venv) in Python. Diese werden verwendet, um systemunabhängige Python Umgebungen zu schaffen. Dies ermöglicht es, Abhängigkeiten für ein Projekt konsistent zu halten. Im Prinzip handelt es sich dabei um eine individuelle Python installation direkt in einem Projekt.
Unter Linux und Mac kann die venv, falls diese nicht direkt mit Python installiert wurde über den Paketmanager nachinstalliert werden. Je nach Betriebssystem kann sich dieser Befehl unterscheiden, hier ein paar Beispiele:
macOS
brew install python-venv
Debian (oder Debian basierend, wie Ubuntu)
apt-get install python-venv
Um nun eine virtual environment zu erzeugen ruft man das venv Modul mit dem folgenden Befehl auf
python -m venv .venv
Zuerst wird hier python mit der Option „-m“ aufgerufen, was für „Modul“ steht.
Anschließend wird mitgegeben, welches Modul aufgerufen werden soll, in diesem Fall „venv“.
Anschließend wird dem venv-Modul als Parameter der Name der zu erstellenden virtual environment mitgegeben. In diesem Fall hier wäre das .venv.
Die venv sollte immer in die .gitignore aufgenommen werden, da diese verweise mit absoluten Pfaden enthält. Wenn die venv in ein anderes Verzeichnis verschoben wird, kann diese nicht mehr korrekt ausgeführt werden.
echo .venv >> .gitignore
Damit diese venv nun genutzt werden kann, muss sie noch aktiviert werden.
Unter macOS und Linux:
source .venv/bin/activate
Sollte alles funktioniert haben, sollte nun zu beginn der Kommandozeile (CLI) in Klammer der Name der aktivierten venv stehen.
(.venv) /home/user/python/ $
Nun können weitere Python Module unabhängig vom restlichen System installiert werden.
pip install python-dotenv
Zu Python dotenv folgt demnächst aber ein separater Post.
Falls man ein Python Projekt von GitHub oder GitLab geladen hat, kann man sich nun solch eine Python venv erstellen und nötige Abhängigkeiten einfach durch die requirements.txt (falls vorhanden) nachinstalliert werden.
pip install -r requirements.txt
Die requirements.txt ist eine einfach Textdatei, die lediglich die Abhängigkeiten auflistet. Darin enthalten sind Modulnamen und entweder welche Version genau oder mindestens installiert werden soll.
Eine eigene requirements.txt mit allen installierten Modulen kann übrigens einfach angelegt werden. Hierzu einfach:
pip freeze > requirements.txt
eingeben. pip freeze erzeug nämlich genau diese Liste und > requirements.txt schreibt diese in die Datei, statt sie auf der CLI auszugeben.
Um die venv wieder zu verlassen, muss lediglich
deactivate
eingegeben werden.
