Wie man virtuelle Umgebungen und `requirements.txt` in Python verwendet

Bei der Entwicklung mit Python ist das Management von Umgebungen und Abhängigkeiten von großer Bedeutung. Um sicherzustellen, dass verschiedene Bibliotheken und Versionen für jedes Projekt sicher gehandhabt werden, ist die Verwendung von virtuellen Umgebungen die beste Wahl. Zudem ermöglicht die Nutzung von requirements.txt das einfache Teilen und Reproduzieren benötigter Pakete. In diesem Artikel erklären wir ausführlich, wie man virtuelle Umgebungen und requirements.txt sowohl in der Praxis als auch in der Theorie nutzt, um Python-Projekte effizient zu verwalten.

Inhaltsverzeichnis

Überblick und Notwendigkeit virtueller Umgebungen


Eine virtuelle Umgebung ist eine isolierte Umgebung, die es ermöglicht, Pakete und Konfigurationen für jedes Python-Projekt unabhängig zu verwalten. Wenn Bibliotheken direkt in die globale Python-Umgebung installiert werden, können Konflikte mit Abhängigkeiten anderer Projekte entstehen.

Die Rolle virtueller Umgebungen


Virtuelle Umgebungen erfüllen folgende Aufgaben:

  • Trennung der Abhängigkeiten: Es ermöglicht die Verwaltung von Bibliotheken und deren Versionen für jedes Projekt einzeln.
  • Reproduzierbarkeit der Umgebung: Auf verschiedenen Maschinen kann die gleiche Umgebung problemlos aufgebaut werden.
  • Schutz der globalen Umgebung: Die Entwicklung kann fortgesetzt werden, ohne die globale Python-Umgebung zu beeinträchtigen.

Warum eine virtuelle Umgebung notwendig ist


Wenn keine virtuelle Umgebung verwendet wird, können die folgenden Probleme auftreten:

  • Es kann zu Konflikten kommen, wenn für verschiedene Projekte unterschiedliche Versionen derselben Bibliothek erforderlich sind.
  • Unnötige Bibliotheken werden global installiert, was zu einer chaotischen Umgebung führt.
  • Die Portierbarkeit von Projekten nimmt ab, und es kann sein, dass das Projekt auf anderen Maschinen nicht funktioniert.

Durch den Einsatz virtueller Umgebungen können diese Probleme gelöst und die Python-Entwicklung effizienter gestaltet werden.

Erstellung einer Python virtuellen Umgebung


Mit dem Standardmodul venv in Python kann eine virtuelle Umgebung einfach erstellt werden. Die folgenden Schritte zeigen, wie man dies tun kann.

1. Vorbereitung des Verzeichnisses für die virtuelle Umgebung


Zuerst wählen Sie das Projektverzeichnis aus, in dem die virtuelle Umgebung erstellt werden soll, und wechseln in diesem Verzeichnis über das Terminal oder die Kommandozeile.

cd /path/to/your/project

2. Erstellen der virtuellen Umgebung


Führen Sie den folgenden Befehl aus, um die virtuelle Umgebung zu erstellen. Der Name der Umgebung kann beliebig gewählt werden, aber normalerweise wird venv verwendet.

python -m venv venv
  • Der obige Befehl erstellt einen Ordner namens venv im aktuellen Verzeichnis, in dem die Daten der virtuellen Umgebung gespeichert werden.

3. Überprüfung der erstellten Verzeichnisstruktur


Das Verzeichnis für die virtuelle Umgebung enthält die folgende Struktur:

  • bin (oder Scripts): Ordner, der ausführbare Dateien enthält.
  • lib: Speicherort für die in der virtuellen Umgebung installierten Pakete.
  • pyvenv.cfg: Konfigurationsdatei der virtuellen Umgebung.

Wichtige Hinweise

  • Wenn mehrere Python-Versionen verwendet werden, kann eine bestimmte Version für die Erstellung der virtuellen Umgebung angegeben werden:
  python3.10 -m venv venv
  • Wenn das venv-Modul nicht installiert ist, muss Python neu installiert werden, um venv einzuschließen.

Nach der Erstellung der virtuellen Umgebung wird im nächsten Schritt erklärt, wie man diese aktiviert und deaktiviert.

Aktivieren und Deaktivieren einer virtuellen Umgebung


Nachdem die virtuelle Umgebung erstellt wurde, kann sie aktiviert (aktiviert) werden, um Python und Pakete innerhalb dieser Umgebung zu verwenden. Wenn die Arbeit abgeschlossen ist, wird die Umgebung deaktiviert. Hier erklären wir die spezifischen Methoden für jedes Betriebssystem.

1. Aktivieren der virtuellen Umgebung


Der Befehl zum Aktivieren der virtuellen Umgebung ist je nach Betriebssystem unterschiedlich.

Für Windows


Wenn Sie die Eingabeaufforderung verwenden:

.\venv\Scripts\activate

Wenn Sie PowerShell verwenden:

.\venv\Scripts\Activate.ps1

Für macOS und Linux


Führen Sie im Terminal den folgenden Befehl aus:

source venv/bin/activate

Überprüfung der aktivierten virtuellen Umgebung


Wenn die Aktivierung erfolgreich war, wird der Name der virtuellen Umgebung (z. B. (venv)) am Anfang der Eingabeaufforderung angezeigt. Beispiel:

(venv) user@machine:~/project$

2. Deaktivieren der virtuellen Umgebung


Um die virtuelle Umgebung zu deaktivieren, führen Sie den folgenden Befehl aus:

deactivate

Nach der Deaktivierung wird der Name der virtuellen Umgebung aus der Eingabeaufforderung entfernt und Sie kehren zur globalen Umgebung zurück.

Wichtige Hinweise

  • Wenn Pakete ohne aktivierte virtuelle Umgebung installiert werden, kann dies Auswirkungen auf die globale Umgebung haben.
  • Deaktivieren kann nur in einem Terminal durchgeführt werden, in dem die virtuelle Umgebung aktiviert wurde.

Durch korrektes Aktivieren und Deaktivieren können Sie die virtuelle Umgebung sicher und effizient nutzen.

Erstellung von `requirements.txt` mit `pip freeze`


requirements.txt ist eine Datei, die alle benötigten Python-Bibliotheken für ein Projekt auflistet und hilft, eine reproduzierbare Entwicklungsumgebung zu erstellen. Im Folgenden erklären wir, wie man requirements.txt mit dem Befehl pip freeze erstellt.

1. Aktivieren der virtuellen Umgebung


Zuerst aktivieren Sie die virtuelle Umgebung. Arbeiten Sie nur in der aktivierten Umgebung, damit nur die Bibliotheken der Umgebung erfasst werden.

2. Installation der benötigten Pakete


Installieren Sie die benötigten Pakete für das Projekt. Zum Beispiel können Sie dies wie folgt tun:

pip install numpy pandas flask

3. Ausgabe der aktuellen Abhängigkeiten mit `pip freeze`


Um alle installierten Pakete und deren Versionen in der virtuellen Umgebung anzuzeigen, führen Sie den folgenden Befehl aus:

pip freeze

Ausgabe-Beispiel:

flask==2.3.2
numpy==1.24.3
pandas==2.1.1

4. Erstellung von `requirements.txt`


Um die Ausgabe von pip freeze in einer requirements.txt-Datei zu speichern, verwenden Sie den folgenden Befehl:

pip freeze > requirements.txt

Dieser Befehl speichert alle installierten Pakete der aktuellen virtuellen Umgebung in der requirements.txt-Datei.

5. Überprüfung von `requirements.txt`


Wenn Sie die generierte requirements.txt-Datei öffnen, werden die Pakete und deren Versionen wie folgt angezeigt:

flask==2.3.2
numpy==1.24.3
pandas==2.1.1

Wichtige Hinweise

  • Um unnötige Pakete zu vermeiden, sollten Sie nur in der virtuellen Umgebung arbeiten.
  • Bei Bedarf können Sie requirements.txt manuell bearbeiten, um unnötige Pakete zu entfernen.

Nun haben Sie eine requirements.txt-Datei erstellt, die alle Abhängigkeiten Ihres Projekts enthält. Durch das Teilen dieser Datei können andere Entwickler oder Server problemlos die gleiche Umgebung wiederherstellen.

Installation von Paketen mit `requirements.txt`


requirements.txt wird verwendet, um die benötigten Bibliotheken für ein Projekt effizient zu installieren. In diesem Abschnitt erläutern wir, wie man alle Pakete aus einer requirements.txt-Datei in einer virtuellen Umgebung auf einmal installiert.

1. Aktivieren der virtuellen Umgebung


Aktivieren Sie die virtuelle Umgebung, in der Sie Pakete installieren möchten. Wenn die Umgebung nicht aktiviert ist, werden die Pakete möglicherweise in der globalen Umgebung installiert.

source venv/bin/activate  # Für macOS/Linux
.\venv\Scripts\activate   # Für Windows

2. Installation der Pakete aus `requirements.txt`


Verwenden Sie den folgenden Befehl, um alle Pakete aus der requirements.txt-Datei zu installieren:

pip install -r requirements.txt

Details zur Installation

  • Der Befehl liest die requirements.txt-Datei und installiert jedes dort aufgelistete Paket.
  • Wenn die Version eines Pakets angegeben ist, wird genau diese Version installiert. Beispiel:
flask==2.3.2
numpy==1.24.3
pandas==2.1.1

Ergebnis: Diese drei Bibliotheken werden in den angegebenen Versionen installiert.

3. Überprüfung des Installationsstatus


Um zu überprüfen, ob die Pakete korrekt installiert wurden, können Sie den folgenden Befehl ausführen, um die Liste der Pakete in der virtuellen Umgebung anzuzeigen:

pip list

4. Fehlerbehebung


Falls bei der Installation Probleme auftreten, überprüfen Sie Folgendes:

  • Internetverbindung: Für den Download von Paketen wird eine Internetverbindung benötigt.
  • Pakete und Versionen: Überprüfen Sie, ob veraltete oder nicht unterstützte Versionen aufgeführt sind.
  • Berechtigungsprobleme: Vergewissern Sie sich, dass die virtuelle Umgebung korrekt aktiviert wurde.

Wichtige Hinweise

  • Wenn Sie die Versionen in requirements.txt ändern, müssen Sie die Auswirkungen auf andere Umgebungen berücksichtigen.
  • Mit der Option --no-cache-dir können Sie den Cache umgehen und die neuesten Versionen erhalten:
  pip install -r requirements.txt --no-cache-dir

Mit requirements.txt können Sie Abhängigkeiten einfach verwalten und eine konsistente Einrichtung über verschiedene Umgebungen hinweg gewährleisten.

Best Practices zur Verbesserung der Reproduzierbarkeit von Projekten


Durch den Einsatz von virtuellen Umgebungen und requirements.txt können Sie die Reproduzierbarkeit und Wartbarkeit Ihrer Python-Projekte verbessern. In diesem Abschnitt stellen wir Best Practices vor, die Ihnen helfen, Ihre Entwicklungsumgebung effizient zu verwalten.

1. Erstellen Sie für jedes Projekt eine eigene virtuelle Umgebung


Indem Sie für jedes Projekt eine separate virtuelle Umgebung erstellen, können Sie Abhängigkeitskonflikte vermeiden. Achten Sie dabei auf folgende Punkte:

  • Verwenden Sie dieselbe Python-Version.
  • Platzieren Sie das Verzeichnis der virtuellen Umgebung (z. B. venv) im Projektstammverzeichnis.

Empfohlene Verzeichnisstruktur

my_project/
├── venv/
├── src/
├── requirements.txt
└── README.md

2. Aktualisieren Sie regelmäßig `requirements.txt`


Wenn Sie neue Bibliotheken installieren oder Versionen ändern, sollten Sie requirements.txt immer aktualisieren:

pip freeze > requirements.txt

Durch diese Gewohnheit stellen Sie sicher, dass Ihr Team eine konsistente Umgebung verwendet.

3. Geben Sie genaue Versionen an


Es ist ratsam, in der requirements.txt die genauen Versionen der Bibliotheken anzugeben. Beispiel:

numpy==1.24.3
flask>=2.3,<2.4
  • Indem Sie die Versionen festlegen, stellen Sie sicher, dass das Projekt in anderen Umgebungen genau gleich funktioniert.
  • Bei Angabe von Versionen müssen Sie auf die Kompatibilität achten.

4. Trennen Sie Entwicklungs- und Produktionspakete


Es ist hilfreich, Bibliotheken, die nur während der Entwicklung benötigt werden (z. B. Debugging- oder Testbibliotheken), in einer separaten Datei zu verwalten. Beispiel:

  • requirements.txt (für Produktion)
  • dev-requirements.txt (für Entwicklung)

Bei der Installation geben Sie die entsprechende Datei an:

pip install -r dev-requirements.txt

5. Schließen Sie die virtuelle Umgebung aus der Versionskontrolle aus


Fügen Sie das Verzeichnis der virtuellen Umgebung (z. B. venv) zu Ihrer .gitignore-Datei hinzu, um es aus der Versionskontrolle auszuschließen. Beispiel:

venv/

Dadurch vermeiden Sie, unnötige Dateien in Ihrem Repository zu speichern.

6. Nutzen Sie `requirements.txt` in CI/CD-Pipelines


In kontinuierlichen Integrations- (CI) und Bereitstellungsumgebungen (CD) können Sie requirements.txt verwenden, um die Umgebung zu vereinheitlichen:

pip install -r requirements.txt

Durch die Integration dieser Schritte in CI-Tools (z. B. GitHub Actions oder Jenkins) können automatische Tests und Bereitstellungen problemlos durchgeführt werden.

7. Überprüfen Sie die Sicherheit der Pakete


Verwenden Sie Tools wie pip-audit oder safety, um regelmäßig die Sicherheit der Abhängigkeiten zu überprüfen:

pip install pip-audit
pip-audit

Durch die Anwendung dieser Best Practices können Sie die Reproduzierbarkeit Ihrer Projekte verbessern und die Zusammenarbeit mit anderen Entwicklern oder Teams vereinfachen.

Fehlerbehebung und Problemlösung


Bei der Verwendung von virtuellen Umgebungen und requirements.txt können gelegentlich Probleme auftreten. In diesem Abschnitt erläutern wir häufig auftretende Probleme und deren Lösungen.

1. Virtuelle Umgebung kann nicht aktiviert werden

Details des Problems


Wenn beim Aktivieren der virtuellen Umgebung folgende Fehlermeldung angezeigt wird:

  • Windows PowerShell: „Skriptausführung ist deaktiviert“
  • Linux/macOS: „Befehl nicht gefunden“

Lösungsmethoden

  • Windows PowerShell: Ändern Sie die Ausführungsrichtlinie. Öffnen Sie PowerShell mit Administratorrechten und führen Sie den folgenden Befehl aus:
  Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
  • Linux/macOS: Überprüfen Sie, ob venv/bin/activate existiert und der Pfad korrekt ist.

2. `pip install` schlägt fehl

Details des Problems


Beim Versuch, Pakete aus requirements.txt zu installieren, können Fehler auftreten, die den Installationsprozess unterbrechen.

  • Ein bestimmtes Paket kann nicht heruntergeladen werden
  • Veraltete Pakete verursachen Kompatibilitätsprobleme

Lösungsmethoden

  • Überprüfen Sie Ihre Internetverbindung: Vergewissern Sie sich, dass Sie online sind.
  • Leeren Sie den Cache und versuchen Sie es erneut:
  pip install --no-cache-dir -r requirements.txt
  • Installieren Sie das Problem-Paket einzeln, um die Ursache zu ermitteln:
  pip install package-name
  • Aktualisieren Sie Abhängigkeiten:
  pip install --upgrade pip setuptools

3. Funktioniert nach der Installation von `requirements.txt` nicht

Details des Problems


Obwohl die Abhängigkeiten korrekt installiert wurden, funktioniert die Anwendung möglicherweise nicht wie erwartet.

  • Überprüfung von `requirements.txt`: Überprüfen Sie, ob veraltete Versionen von Paketen darin aufgeführt sind.
  • Beheben von Abhängigkeitskonflikten:
  pip check

Konfliktpakete werden angezeigt, und Sie können die Versionen entsprechend anpassen.

4. Die virtuelle Umgebung ist beschädigt

Details des Problems


Die virtuelle Umgebung funktioniert möglicherweise nicht oder die Abhängigkeiten sind beschädigt.

Lösungsmethoden

  • Löschen Sie die virtuelle Umgebung und erstellen Sie sie neu:
  rm -rf venv
  python -m venv venv
  • Verwenden Sie `requirements.txt`, um die Abhängigkeiten neu zu installieren:
  pip install -r requirements.txt

5. `pip freeze` enthält unnötige Pakete

Details des Problems


Es können unnötige Pakete in der requirements.txt-Datei erscheinen, die mit pip freeze erstellt wurde.

Lösungsmethoden

  • Entfernen Sie unnötige Pakete manuell oder deinstallieren Sie sie mit pip uninstall.
  • Erstellen Sie die virtuelle Umgebung neu und installieren Sie nur die benötigten Pakete.

Zusammenfassung


Probleme im Zusammenhang mit virtuellen Umgebungen und requirements.txt können durch eine gründliche Überprüfung der Umgebungs- und Abhängigkeitskonfigurationen gelöst werden. Mit einem klaren Verständnis der Fehlerbehebungsschritte können Sie Ihre Entwicklungsprozesse effizient fortsetzen.

Erweiterte Anwendung: Integration mit Docker


Virtuelle Umgebungen und requirements.txt können auch bei der Einrichtung von Python-Projekten in Docker hilfreich sein. In diesem Abschnitt erklären wir, wie man Docker für die Erstellung und Verwaltung von Umgebungen in Python-Projekten nutzt.

1. Warum Docker für die Reproduktion virtueller Umgebungen verwenden?


Die Verwendung von Docker bietet die folgenden Vorteile:

  • Es ermöglicht, das gesamte Projekt einschließlich der virtuellen Umgebung in einem Container bereitzustellen.
  • Stellt Konsistenz in der Teamarbeit und in Produktionsumgebungen sicher.
  • Überbrückt Unterschiede in Betriebssystemen und Systemkonfigurationen, sodass eine reproduzierbare Umgebung garantiert werden kann.

2. Erstellen einer Dockerfile


Im Folgenden zeigen wir ein Beispiel für eine Dockerfile, die requirements.txt verwendet, um eine Python-Umgebung in Docker einzurichten:

# Basis-Image festlegen
FROM python:3.10-slim

# Arbeitsverzeichnis festlegen
WORKDIR /app

# Erforderliche Dateien in den Container kopieren
COPY requirements.txt ./

# Notwendige Pakete installieren
RUN pip install --no-cache-dir -r requirements.txt

# Anwendungscode kopieren
COPY . .

# Anwendung ausführen (falls erforderlich)
CMD ["python", "app.py"]

3. Projektverzeichnisstruktur


Wenn Sie Docker und virtuelle Umgebungen verwenden, empfehlen wir die folgende Verzeichnisstruktur:

my_project/
├── app.py
├── requirements.txt
├── Dockerfile
└── other_project_files/

4. Erstellen und Ausführen des Docker-Images


Verwenden Sie den folgenden Befehl, um das Docker-Image zu erstellen und den Container zu starten:

# Docker-Image erstellen
docker build -t my-python-app .

# Container starten
docker run -it --rm my-python-app

5. Nutzung von Docker Compose (optional)


Wenn mehrere Container verwaltet werden müssen, ist es praktisch, eine docker-compose.yml zu erstellen.

version: "3.8"
services:
  app:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/app
    command: python app.py

Verwenden Sie den folgenden Befehl, um den Container mit Docker Compose zu starten:

docker-compose up

6. Best Practices mit Docker

  • Wählen Sie ein leichtes Basis-Image (z. B. python:3.10-slim).
  • Verwenden Sie die Option --no-cache-dir, um den Cache zu minimieren.
  • Vermeiden Sie es, unnötige Dateien in den Container zu kopieren, indem Sie .dockerignore verwenden.

7. Praktisches Beispiel: Flask-Anwendung


Beispiel einer einfachen Webanwendung mit Flask:

  • requirements.txt:
  flask==2.3.2
  • app.py:
  from flask import Flask
  app = Flask(__name__)

  @app.route('/')
  def home():
      return "Hello, Docker!"

  if __name__ == "__main__":
      app.run(host="0.0.0.0", port=5000)

Wenn Sie dies mit Docker aufbauen und ausführen, wird die Flask-Anwendung sofort gestartet.

Zusammenfassung


Durch die Kombination von Docker mit virtuellen Umgebungen und requirements.txt können Sie Entwicklungs- und Produktionsumgebungen konsistent und reproduzierbar gestalten. Diese Integration bildet die Grundlage für einen effizienten und stabilen Entwicklungsworkflow.

Zusammenfassung


Dieser Artikel erläuterte ausführlich, wie man virtuelle Umgebungen und requirements.txt in Python nutzt, von den Grundlagen bis zu fortgeschrittenen Anwendungen. Durch den Einsatz virtueller Umgebungen können Abhängigkeiten sicher verwaltet werden, und mit requirements.txt kann die Reproduzierbarkeit von Projekten erhöht werden. Darüber hinaus ermöglicht die Integration mit Docker eine konsistente Einrichtung von Entwicklungs- und Produktionsumgebungen.

Durch die richtige Nutzung dieser Tools und Methoden können Sie effizient und stabil ein Python-Projekt betreiben.

Inhaltsverzeichnis