Python venv Kurztabelle

Einige nützliche venv-Befehle

Inhaltsverzeichnis

Venv ist ein virtuelles Umgebungsmanagement-Commandline-Tool. Eine viel einfachere Alternative im Vergleich zu Anaconda. Hier sind einige nützliche venv-Befehle.

Ein Python versucht, ein Holzschloss zu öffnen.

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:
    source venv/bin/activate
    
    Der Shell-Prompt sollte nun den Umgebungsnamen anzeigen.

Die virtuelle Umgebung deaktivieren

  • Auf allen Plattformen:
    deactivate
    
    Dies bringt Sie zurück zu Ihrem System-Python.

Pakete installieren

  • Mit pip:
    pip install
    
    Beispiel:
    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:
    pip install -r requirements.txt
    
    Stellen Sie sicher, dass Ihre virtuelle Umgebung aktiviert ist, bevor Sie diese Befehle ausführen.

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 ==) in requirements.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 exportiert pip 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.