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.
Nur damit Sie wissen, dass es meiner Meinung nach ein viel besserer Tool für das Paket- und Umgebungsmanagement in Python gibt als venv – uv. Schauen Sie sich an: uv – Neuer Python-Paket-, Projekt- und Umgebungsmanager
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 mit
virtualenv
:virtualenv -p /usr/local/bin/python3.10 venv
(Benötigt 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.
Nicht festlegen von Paketversionen
- Die Verwendung loser Versionsbezeichner (z. B.
>=
anstelle von==
) inrequirements.txt
untergräbt die Wiederherstellungsfähigkeit. Das Festlegen exakter Versionen stellt sicher, dass alle, die an dem Projekt arbeiten, dieselben Paketversionen verwenden und verhindert unerwartete Probleme bei 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 commiten
- Das Einbeziehen des virtuellen Umgebungsverzeichnisses (z. B.
venv/
) in die Versionskontrolle vergrößert die Repositorys unnötig und ist überflüssig. Fügen Sie immer venv-Verzeichnisse in.gitignore
hinzu, um Ihr Repository sauber zu halten.
Die Trennung von Entwicklung und Produktionsabhängigkeiten ignorieren
- Das Nichtunterscheiden zwischen Entwicklung und Produktionsabhängigkeiten kann zu überflüssigen oder unsicheren Bereitstellungen führen. Verwenden Sie separate Anforderungsdateien oder Konfigurationsabschnitte für jede.
Fehlende Dokumentation und Automatisierung
- Nicht dokumentierte Umgebungseinrichtungsschritte oder das Versäumen der Automatisierung (mit Skripten oder Makefiles) machen das Onboarding neuer Mitwirkender und die Wiederherstellung von Umgebungen schwieriger.
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. Verwenden Sie immer venvs für Projektabhängigkeiten und vermeiden Sie, System-Pakete zu beeinflussen.
Zusammenfassungstabelle
Fehlerquelle | Auswirkung |
---|---|
Vergessen, venv zu aktivieren | Pakete werden in der falschen Umgebung installiert |
Keine Festlegung von Paketversionen | Unvorhersehbare Builds, schwer reproduzierbare Fehler |
Mischen von globalen und virtuellen Umgebungen | Abhängigkeits-/Versionskonflikte |
Commiten von venv-Verzeichnissen in die Versionskontrolle | Überflüssige, unordentliche Repositorys |
Keine Trennung von Entwicklung und Produktionsabhängigkeiten | Überflüssige/unsichere Produktionsumgebungen |
Fehlende Dokumentation/Automatisierung | Schwieriges Onboarding, inkonsistente Einrichtungen |
Alte Umgebungen nicht bereinigen | Festplattenspeicherverlust, Verwirrung |
Ändern des System-Python oder Pakete | Systeminstabilität, zerstörte 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-Umgebungen und virtuellen Umgebungen für Wiederherstellungsfähigkeit
Merkmal | 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 |
Python-Versionskontrolle | Kann jede Python-Version pro Umgebung spezifizieren und installieren | Verwendet die systeminstallierte Python-Version |
Plattformübergreifende Konsistenz | Mehr konsistent über verschiedene OS (Windows, macOS, Linux), da alle Abhängigkeiten verwaltet werden | Verlässt sich auf Systembibliotheken, die sich je nach OS unterscheiden |
Paketquellen | Verwendet Conda-Repositories (vorkompilierte Binärdateien, wissenschaftlicher Stack) | Verwendet 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 |
Umgebungsexport/Import | 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, besonders auf Windows |
Komplexität | Slightly higher setup and management overhead | Lightweight, simpler for basic Python projects |
Zusammenfassung der Schlüsselpunkte
-
Conda-Umgebungen sind ideal für Wiederherstellungsfähigkeit in Projekten, die sowohl Python- als auch nicht- Python-Abhängigkeiten benötigen, oder wenn die exakte Wiederherstellung über Plattformen kritisch ist. Conda verwaltet die gesamte Stack – einschließlich Python selbst, Bibliotheken und sogar Compiler – was es einfacher macht, komplexe Umgebungen zu teilen und wiederherzustellen, insbesondere im wissenschaftlichen und Forschungskontext.
-
Python-Virtuelle Umgebungen (
venv
/virtualenv
) sind leichtgewichtig und ausgezeichnet für die Isolierung von Python-Abhängigkeiten in reinen Python-Projekten. Allerdings verwalten sie keine Systemebenen- oder nicht- Python-Abhängigkeiten, wodurch die Wiederherstellungsfähigkeit beeinträchtigt werden kann, wenn Ihr Projekt auf externe Bibliotheken oder spezifische Systemkonfigurationen angewiesen ist. -
Exportieren und Teilen von Umgebungen: Conda ermöglicht Ihnen, eine vollständige Umgebungsspezifikation (
conda env export
) zu exportieren, einschließlich aller Abhängigkeiten und deren Versionen, die genau anderswo wiederhergestellt werden kann. Mit virtuellen Umgebungen exportiertpip freeze
nur Python-Pakete, nicht Systemabhängigkeiten oder die Python-Interpreterversion. -
Schlussfolgerung
Verwenden Sie Conda für maximale Wiederherstellungsfähigkeit in wissenschaftlichen, plattformübergreifenden oder komplexen Projekten. Verwenden Sie Python-Virtuelle Umgebungen für leichtgewichtige, reine Python-Projekte, bei denen Systemabhängigkeiten keine Rolle spielen.