Python venv Kurztabelle
Einige nützliche venv-Befehle
Venv ist ein virtuelles Umgebungsmanagement-Commandline-Tool. Eine viel einfachere Alternative im Vergleich zu Anaconda. Hier sind einige nützliche venv-Befehle.
Python venv Cheatsheet
Eine virtuelle Umgebung erstellen
-
Standardbefehl (Python 3.3+):
python -m venv venv
Dies erstellt eine virtuelle Umgebung namens
venv
in Ihrem aktuellen Verzeichnis. -
Mit einer bestimmten Python-Version (wenn installiert):
python3.10 -m venv venv
oder mithilfe von
virtualenv
:virtualenv -p /usr/local/bin/python3.10 venv
(Erfordert das
virtualenv
-Paket).
Die virtuelle Umgebung aktivieren
- Auf Windows:
.\venv\Scripts\activate
- Auf macOS/Linux:
Der Shell-Prompt sollte nun den Umgebungsnamen anzeigen.source venv/bin/activate
Die virtuelle Umgebung deaktivieren
- Auf allen Plattformen:
Dies bringt Sie zurück zu Ihrem System-Python.deactivate
Pakete installieren
- Mit pip:
Beispiel:pip install
pip install numpy pandas
- Pip aktualisieren (empfohlen):
python -m pip install --upgrade pip
Pakete einfrieren und Anforderungen exportieren
- Aktuelle Umgebungspakete speichern:
pip freeze > requirements.txt
- Aus einer requirements-Datei installieren:
Stellen Sie sicher, dass Ihre virtuelle Umgebung aktiviert ist, bevor Sie diese Befehle ausführen.pip install -r requirements.txt
Eine virtuelle Umgebung entfernen
deactivate
rm -rf <env path>
Häufige Fehler beim Verwalten von Python-Virtual-Umgebungen
Vergessen, die virtuelle Umgebung zu aktivieren
- Ein häufiger Fehler besteht darin, Befehle ohne Aktivierung der gewünschten virtuellen Umgebung auszuführen, was zu Installationen in der globalen Umgebung oder der falschen venv führt. Dies kann zu Abhängigkeitskonflikten und unvorhersehbarem Verhalten führen.
Keine Versionen der Pakete festlegen
- Die Verwendung loser Versionsangaben (wie
>=
anstelle von==
) inrequirements.txt
untergräbt die Wiederherstellungsfähigkeit. Die Festlegung exakter Versionen stellt sicher, dass alle, die an dem Projekt arbeiten, dieselben Paketversionen verwenden und verhindert unerwartete Probleme während der Bereitstellung oder Zusammenarbeit.
Mischen von globalen und virtuellen Umgebungen
- Unabsichtliche Installationen globaler Pakete oder das Mischen globaler und virtueller Umgebungen können Konflikte verursachen, insbesondere wenn verschiedene Projekte inkompatible Paketversionen erfordern. Stellen Sie sicher, dass Sie sich immer in der richtigen Umgebung befinden.
Virtuelle Umgebungen in der Versionskontrolle speichern
- Das Einbeziehen des virtuellen Umgebungsverzeichnisses (z. B.
venv/
) in der Versionskontrolle vergrößert die Repositorys unnötig. Fügen Sie immer venv-Verzeichnisse in.gitignore
hinzu, um Ihr Repository sauber zu halten.
Die Trennung zwischen Entwicklung und Produktionsabhängigkeiten ignorieren
- Das Nicht-Unterscheiden zwischen Entwicklung und Produktionsabhängigkeiten kann zu überfüllten oder unsicheren Bereitstellungen führen. Verwenden Sie separate requirements-Dateien oder Konfigurationsabschnitte für jede Umgebung.
Fehlende Dokumentation und Automatisierung
- Nicht dokumentierte Umgebungseinstellungen oder das Versäumen der Automatisierung (mit Skripten oder Makefiles) erschweren das Onboarding neuer Mitwirkender und die Wiederherstellung von Umgebungen.
Alte Umgebungen nicht regelmäßig bereinigen
- Im Laufe der Zeit können ungenutzte virtuelle Umgebungen sich ansammeln, Festplattenspeicher verschwenden und Verwirrung verursachen. Bereinigen Sie regelmäßig veraltete venvs, um eine ordentliche Arbeitsumgebung zu gewährleisten.
System-Python und Paket-Manager-Grenzen ignorieren
- Das Ändern des System-Python oder das Mischen von System-Paketmanagern mit pip kann System-Tools zerstören und schwer diagnostizierbare Probleme verursachen. Nutzen Sie immer venvs für Projektabhängigkeiten und vermeiden Sie das Eingreifen in systemverwaltete Pakete.
Zusammenfassungstabelle
Fehlerquelle | Auswirkung |
---|---|
Vergessen, venv zu aktivieren | Pakete werden in der falschen Umgebung installiert |
Keine Versionen der Pakete festlegen | Unvorhersehbare Builds, schwer reproduzierbare Fehler |
Mischen von globalen und virtuellen Umgebungen | Abhängigkeits-/Versionskonflikte |
Virtuelle Umgebungsverzeichnisse in der Versionskontrolle speichern | Überflüssige, unordentliche Repositorys |
Keine Trennung zwischen Entwicklung und Produktionsabhängigkeiten | Überflüssige/unsichere Produktionsumgebungen |
Fehlende Dokumentation/Automatisierung | Schwieriges Onboarding, inkonsistente Einrichtungen |
Alte Umgebungen nicht bereinigen | Festplattenspeicherverlust, Verwirrung |
System-Python oder Pakete verändern | Systeminstabilität, beschädigte Tools |
Das Einhalten von Best Practices – wie immer die venv zu aktivieren, Abhängigkeiten festzulegen, Umgebungen zu trennen und klare Dokumentation zu erstellen – kann helfen, diese häufigen Fehler zu vermeiden.
Wichtige Unterschiede zwischen Conda- und virtuellen Umgebungen für Wiederherstellungsfähigkeit
Funktion | Conda-Umgebungen | Python-Virtuelle Umgebungen (venv/virtualenv) |
---|---|---|
Umfang der Verwaltung | Verwaltet Python-Pakete und nicht-Python-Abhängigkeiten (z. B. Systembibliotheken, Compiler) | Verwaltet nur Python-Pakete über pip |
Verwaltung der Python-Version | Kann jede Python-Version pro Umgebung spezifizieren und installieren | Nutzt die systeminstallierte Python-Version |
Plattformübergreifende Konsistenz | Mehr konsistent über verschiedene Betriebssysteme (Windows, macOS, Linux), da alle Abhängigkeiten verwaltet werden | Verlässt sich auf Systembibliotheken, die sich je nach Betriebssystem unterscheiden |
Quellen der Pakete | Nutzt Conda-Repositories (vorkompilierte Binärdateien, wissenschaftlicher Stack) | Nutzt PyPI (pip) für Python-Pakete |
Wiederherstellungsfähigkeit | Höher für komplexe, wissenschaftliche oder gemischte Sprachprojekte; kann vollständige Umgebung exportieren (conda env export ) |
Gut für reine Python-Projekte; kann Wiederherstellungsfähigkeit verlieren, wenn Systemabhängigkeiten beteiligt sind |
**Nicht-**Python-Abhängigkeiten | Kann installieren und verwalten (z. B. OpenBLAS, libpng) | Kann nicht verwalten; müssen separat installiert werden |
Export/Import von Umgebungen | conda env export / conda env create für vollständige Wiederherstellungsfähigkeit |
pip freeze > requirements.txt / pip install -r requirements.txt (nur Python-Pakete) |
Leistung | Schneller und zuverlässiger für große wissenschaftliche Pakete (z. B. numpy, pandas) | Vielleicht erforderlich, aus der Quelle zu kompilieren, insbesondere unter Windows |
Komplexität | Leicht höhere Setup- und Verwaltungsüberhead | Leichtgewichtig, besser für einfache Python-Projekte |
Zusammenfassung der Schlüsselpunkte
-
Conda-Umgebungen sind ideal für Wiederherstellungsfähigkeit in Projekten, die sowohl Python- als auch nicht-Python-Abhängigkeiten erfordern, oder wenn die exakte Wiederherstellung über Plattformen kritisch ist. Conda verwaltet die gesamte Stack-Struktur – einschließlich Python selbst, Bibliotheken und sogar Compiler – was es einfacher macht, komplexe Umgebungen zu teilen und zu reproduzieren, insbesondere in wissenschaftlichen und Forschungskontexten.
-
Python-Virtuelle Umgebungen (
venv
/virtualenv
) sind leichtgewichtig und hervorragend, um Python-Abhängigkeiten in reinen Python-Projekten zu isolieren. Allerdings verwalten sie keine Systemebenen oder nicht-Python-Abhängigkeiten, sodass die Wiederherstellungsfähigkeit beeinträchtigt sein kann, wenn Ihr Projekt externe Bibliotheken oder spezifische Systemkonfigurationen erfordert. -
Exportieren und Teilen von Umgebungen: Conda ermöglicht Ihnen, eine vollständige Umgebungsbeschreibung (
conda env export
) zu exportieren, einschließlich aller Abhängigkeiten und deren Versionen, die genau anderswo wiederhergestellt werden können. Mit virtuellen Umgebungen exportiertpip freeze
nur Python-Pakete, nicht Systemabhängigkeiten oder die Python-Interpreter-Version. -
Zusammenfassung
Verwenden Sie Conda für maximale Wiederherstellungsfähigkeit in wissenschaftlichen, plattformübergreifenden oder komplexen Projekten. Verwenden Sie Python-Virtuelle Umgebungen für leichte, reine Python-Projekte, bei denen Systemabhängigkeiten keine Rolle spielen.