Skip to main content

Python-virtuelle Umgebungen meistern: Ein umfassender Leitfaden zu venv, Docker und sicherem Code

Artikel von
blog feature snyk container custom base recommendations

10. Januar 2024

0 Min. Lesezeit

Python ist eine vielseitige und weitverbreitete Programmiersprache mit einem umfangreichen Ökosystem aus Modulen und Paketen. In diesem Ökosystem ist es wichtig, die Rolle virtueller Umgebungen zu verstehen. In diesem Artikel erfahren Sie, was virtuelle Umgebungen sind, warum Entwickler sie benötigen und welche gängigen Tools es zum Erstellen virtueller Python-Umgebungen gibt.

Was sind virtuelle Umgebungen?

Eine virtuelle Umgebung ist ein eigenständiger Verzeichnisbaum, der eine Python-Installation für eine bestimmte Python-Version sowie zusätzliche Pakete enthält. Virtuelle Umgebungen helfen dabei, die Abhängigkeiten verschiedener Projekte voneinander zu trennen, indem sie isolierte Bereiche dafür schaffen. So kann jedes Ihrer Projekte eigene Abhängigkeiten haben – unabhängig davon, welche Abhängigkeiten andere Projekte verwenden.

Sehen wir uns ein Beispiel dafür an, wie Sie mit dem integrierten Python-Modul venv eine virtuelle Umgebung erstellen:

$ python3 -m venv /path/to/new/virtual/environment

Im obigen Befehl können Sie /path/to/new/virtual/environment durch das Zielverzeichnis Ihrer Wahl ersetzen. Dieser Befehl erstellt ein Verzeichnis, sofern es noch nicht existiert, und richtet am angegebenen Speicherort eine neue virtuelle Umgebung ein.

Warum Entwickler virtuelle Umgebungen benötigen

Bei der Arbeit an mehreren Python-Projekten kann jedes Projekt unterschiedliche Python-Versionen und Python-Pakete erfordern. Wenn Sie alles global installieren, kann es zu Versionskonflikten und anderen Problemen kommen. Hier kommen virtuelle Umgebungen ins Spiel.

Mit virtuellen Umgebungen können Entwickler an mehreren Python-Projekten arbeiten, ohne sich Gedanken über Abhängigkeiten machen zu müssen. Sie bieten einen isolierten Bereich, in dem Sie Python und andere Pakete installieren können. So hat jedes Ihrer Projekte eigene Abhängigkeiten, die sich nicht gegenseitig beeinträchtigen.

Außerdem tragen virtuelle Umgebungen dazu bei, die Reproduzierbarkeit Ihrer Projekte sicherzustellen. Das ist besonders wichtig, wenn Sie im Team arbeiten und Ihren Code mit anderen teilen müssen.

Verschiedene Tools zum Erstellen virtueller Python-Umgebungen

Für das Erstellen virtueller Python-Umgebungen stehen verschiedene Tools zur Verfügung. Hier sind einige Beispiele:

venv: Dies ist eine Standardbibliothek von Python, die ab Python 3.3 verfügbar ist. Damit lassen sich virtuelle Umgebungen erstellen und verwalten.
Im obigen Befehl können Sie /path/to/new/virtual/environment durch das Zielverzeichnis Ihrer Wahl ersetzen. Dieser Befehl erstellt ein Verzeichnis, sofern es noch nicht existiert, und richtet am angegebenen Speicherort eine neue virtuelle Umgebung ein.

$ python3 -m venv myenv

virtualenv: Dieses sehr beliebte Tool erstellt isolierte Python-Umgebungen. Es ist älter als venv und bietet mehr Funktionen.

$ pip install virtualenv
$ virtualenv myenv

pipenv: Dieses Tool soll die besten Funktionen der verschiedenen Paketverwaltungssysteme in die Python-Welt bringen. Es vereint Pipfile, pip und virtualenv in einem einzigen Befehl.

$ pip install pipenv
$ pipenv --three

Kurz gesagt: Virtuelle Umgebungen sind ein unverzichtbarer Bestandteil der Python-Entwicklung. Ganz gleich, ob Sie ein erfahrener Python-Entwickler sind oder gerade erst anfangen – wenn Sie virtuelle Umgebungen verstehen und nutzen, verbessern Sie Ihren Entwicklungsprozess erheblich.

Mit venv virtuelle Python-Umgebungen erstellen

Als Nächstes erfahren Sie, wie Sie mit venv, einem integrierten Python-Modul, virtuelle Umgebungen erstellen. Die Nutzung virtueller Umgebungen in Python gilt als Best Practice, um projektspezifische Abhängigkeiten zu isolieren und eine saubere Entwicklungsumgebung zu erhalten. Deshalb ist venv ein unverzichtbares Tool für Entwickler und DevOps-Spezialisten, die mit Python-Anwendungen arbeiten.

So erstellen Sie mit venv eine virtuelle Umgebung

Mit venv lässt sich ganz einfach eine virtuelle Umgebung erstellen. Navigieren Sie in Ihrem Terminal zum Projektverzeichnis und führen Sie den folgenden Befehl aus:

python3 -m venv myenv

Dieser Befehl erstellt in Ihrem aktuellen Verzeichnis ein neues Verzeichnis mit dem Namen myenv. Darin befindet sich die virtuelle Umgebung mit dem Python-Interpreter, der Standardbibliothek und verschiedenen unterstützenden Dateien.

So aktivieren und verwenden Sie die virtuelle Umgebung

Nachdem Sie Ihre virtuelle Umgebung erstellt haben, müssen Sie sie aktivieren. Dadurch wird Ihr PATH angepasst, sodass der Python-Befehl die Version aus Ihrer virtuellen Umgebung statt des globalen Python-Interpreters ausführt.

Mit dem folgenden Befehl können Sie die virtuelle Umgebung aktivieren:

source myenv/bin/activate

Nach der Aktivierung zeigt die Eingabeaufforderung Ihres Terminals die aktive Umgebung an. Ihr Terminal sollte ungefähr so aussehen:

(myenv) $

Jetzt können Sie Pakete in dieser Umgebung installieren, ohne Ihre globale Python-Konfiguration zu beeinflussen.

Python 3 in der virtuellen Umgebung installieren

Da das Modul venv ab Python 3.3 verfügbar ist, wird Python 3 beim Erstellen der virtuellen Umgebung automatisch darin installiert. Sie können beim Erstellen der Umgebung jedoch auch eine andere Python-Version angeben. Um beispielsweise eine Umgebung mit Python 3.7 zu erstellen, verwenden Sie den folgenden Befehl:

python3.7 -m venv myenv

Installation überprüfen

Mit dem folgenden Befehl können Sie überprüfen, ob Python 3 in Ihrer virtuellen Umgebung installiert ist:

python --version

Dieser Befehl sollte die Python-Version ausgeben, die in Ihrer Umgebung installiert ist.

Denken Sie daran: Mit venv virtuelle Umgebungen zu erstellen und zu verwalten, ist eine wichtige Fähigkeit in der Python-Entwicklung. So lassen sich Projektabhängigkeiten effektiv verwalten und Konsistenz und Zuverlässigkeit Ihrer Projekte sicherstellen.

Bonus: Eine lokale Python-Entwicklungsumgebung in einem Docker-Container einrichten

Docker-Container eignen sich hervorragend, um reproduzierbare Artefakte zu erstellen und Versionsprobleme mit dem nativen Betriebssystem zu vermeiden. Sehen wir uns an, wie Sie mithilfe von Docker eine lokale Python-Entwicklungsumgebung einrichten. Wir erklären, was Docker ist, warum es für die Python-Entwicklung nützlich ist, wie Sie eine Dockerfile erstellen und eine Python-Anwendung in einem Docker-Container erstellen und ausführen. Abschließend erfahren Sie, wie Sie Ihre Python-Docker-Anwendungen mit Snyk absichern.

Was ist Docker?

Docker ist eine Open-Source-Plattform, die die Bereitstellung, Skalierung und Verwaltung von Anwendungen automatisiert. Sie verpackt Software in standardisierte Einheiten, sogenannte Container, die alles enthalten, was die Software zum Ausführen benötigt – einschließlich Bibliotheken, Systemtools, Code und Laufzeitumgebung. Mit Docker können Sie für konsistente Umgebungen sorgen – von der Entwicklung bis zur Produktion.

Warum Docker für die Python-Entwicklung verwenden?

Es gibt mehrere Gründe, warum Docker für die Python-Entwicklung nützlich ist:

  • Konsistenz: Docker-Container sorgen dafür, dass Ihre Anwendung überall genau gleich ausgeführt wird – unabhängig davon, wo sie bereitgestellt wird.

  • Isolation: Docker sorgt für Isolation, sodass die Abhängigkeiten verschiedener Projekte voneinander getrennt bleiben. So lassen sich Abhängigkeiten einfach verwalten und Konflikte zwischen Projekten vermeiden.

  • Reproduzierbarkeit: Docker-Container sind reproduzierbar. So können Sie dieselbe Umgebung ganz einfach mit anderen teilen.

Eine Dockerfile für eine Python-Anwendung erstellen

Ein Dockerfile ist ein Skript mit einer Sammlung von Befehlen und Anweisungen zum Erstellen eines Docker-Images. Hier ist ein einfaches Beispiel für ein Dockerfile für eine Python-Anwendung:

FROM python:3.8

WORKDIR /app

COPY requirements.txt .

RUN pip install -r requirements.txt

COPY . .

CMD ["python", "./your-python-script.py"]

In dieser Dockerfile verwenden wir zunächst ein Python-3.8-Image. Anschließend kopieren wir die Datei requirements.txt in das Docker-Image und installieren die Python-Abhängigkeiten. Danach kopieren wir den restlichen Code in das Docker-Image und geben den Befehl zum Ausführen der Anwendung an.

Eine Python-Anwendung in einem Docker-Container erstellen und ausführen

Nachdem Sie eine Dockerfile erstellt haben, können Sie mit dem Befehl docker build Ihr Docker-Image erstellen:

docker build -t your-python-app .

Mit diesem Befehl erstellen Sie aus Ihrer Dockerfile ein Docker-Image und versehen es mit dem Namen your-python-app.

Um die Anwendung in einem Docker-Container auszuführen, können Sie den Befehl docker run verwenden:

docker run -p 8000:8000 your-python-app

Mit diesem Befehl führen Sie Ihre Anwendung in einem Docker-Container aus und ordnen Port 8000 des Containers Port 8000 Ihres Computers zu.

So sichern Sie Ihre Python-Docker-Anwendungen mit Snyk

Snyk hilft Ihnen dabei, Sicherheitslücken in Ihren Docker-Images zu finden und zu beheben. Das Tool lässt sich in Ihre CI/CD-Pipeline integrieren, damit Ihre Docker-Images vor der Bereitstellung sicher sind.

Um Snyk zu verwenden, müssen Sie es zunächst installieren:

npm install -g snyk

Anschließend können Sie Ihr Docker-Image auf Sicherheitslücken überprüfen:

snyk test --docker your-python-app:latest --file=Dockerfile

Mit diesem Befehl werden Ihr Docker-Image und Ihre Dockerfile auf Sicherheitslücken überprüft. Werden Sicherheitslücken gefunden, liefert Snyk detaillierte Informationen dazu und empfiehlt, wie Sie sie beheben können.

Ich empfehle Ihnen ausdrücklich unseren ausführlichen Artikel zu Best Practices für die Containerisierung von Python-Anwendungen mit Docker, die Verwendung von Snyk Advisor, um zuverlässige, sichere und gut gepflegte Python-Pakete auf PyPI zu finden, sowie den Einsatz von Snyk zum Absichern Ihrer Python-Anwendungen.

Wie geht es weiter?

Abschließend möchte ich Ihnen zahlreiche Ressourcen zum Weiterlesen und zur weiteren Beschäftigung mit Python und der Einrichtung virtueller Umgebungen vorstellen.

Pyenv-Dokumentation

Pyenv ist ein einfaches, leistungsstarkes und plattformübergreifendes Tool zur Verwaltung mehrerer Python-Versionen. Die Pyenv-Dokumentation enthält eine Anleitung zur Installation, Verwendung und Verwaltung von Python-Versionen mit Pyenv.

Link: Pyenv-Dokumentation

Venv-Dokumentation

Venv ist ein Tool, das ab Python 3.3 verfügbar ist und isolierte Python-Umgebungen erstellt. Die Venv-Dokumentation enthält eine Anleitung zum Erstellen, Verwenden und Verwalten virtueller Python-Umgebungen.

Link: Venv-Dokumentation

Docker-Dokumentation

Docker ist eine Plattform, mit der Entwickler Anwendungen in Containern erstellen, teilen und ausführen können. Die Docker-Dokumentation enthält eine Anleitung zur Installation, Verwendung und Verwaltung von Docker-Containern.

Link: Docker-Dokumentation

Weitere hilfreiche Ressourcen

Im Folgenden finden Sie Links zu weiteren hilfreichen Ressourcen mit ausführlicheren, praxisorientierten Anleitungen zur Python-Installation und zur Verwaltung virtueller Python-Umgebungen.

Ganz gleich, ob Sie Entwickler oder DevOps-Praktiker sind: Diese Ressourcen unterstützen Sie auf Ihrem Weg in der Softwareentwicklung.

Python-Schwachstellen finden und beheben

Schützen Sie Ihre Anwendungen mit der Schwachstellensuche und den Behebungsempfehlungen von Snyk. 

Keine Kreditkarte erforderlich.

Oder registrieren Sie sich mit Azure AD Docker ID Bitbucket

Mit der Nutzung von Snyk erklären Sie sich mit unseren Richtlinien einverstanden, einschließlich unserer Nutzungsbedingungen und Datenschutzerklärung.

Weiterlesen

feature insights context
Blog

Autonome Angriffe sind bereits Realität. Die Verteidigung muss Schritt halten.

Autonome Angreifer verkürzen das Zeitfenster für die Verteidigung. Erfahren Sie, wie kontinuierliches Erkennen, Beheben, Validieren und Verhindern Sicherheitsteams helfen kann, Schritt zu halten.

feature insights context
Blog

Ist Prävention im Grunde ein gelöstes Problem?

Die Prävention in von Agenten generiertem Code ist architektonisch gelöst – die Herausforderung besteht jedoch weiterhin darin, Kontrollen zu wählen, die die Sicherheit schützen, ohne die Entwicklung zu verlangsamen.

Live Stream

Remediation-Agenten verständlich erklärt: Warum Beheben besser ist als Finden

Erfahren Sie, wie der Remediation Agent von Snyk Sicherheitsinformationen, Analysen zur Ausnutzbarkeit und Validierung nutzt, um Schwachstellen in zusammenführbare Pull Requests zu verwandeln.