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.

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:
    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.

Nicht festlegen von Paketversionen

  • Die Verwendung loser Versionsbezeichner (z. B. >= anstelle von ==) in requirements.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 exportiert pip 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.