Python Virtuelle Umgebungen

PythonBeginner
Jetzt üben

Einführung

Willkommen zu diesem Lab über virtuelle Python-Umgebungen. Der Einsatz einer virtuellen Umgebung dient dazu, Python-Code in gekapselten Bereichen zu testen und zu verhindern, dass die globale Python-Installation mit Bibliotheken überladen wird, die möglicherweise nur für ein einziges Projekt benötigt werden. Diese Vorgehensweise ist entscheidend für saubere, reproduzierbare und konfliktfreie Entwicklungsumgebungen.

In diesem Lab sammeln Sie praktische Erfahrungen mit fünf beliebten Tools zur Verwaltung von virtuellen Python-Umgebungen und Abhängigkeiten:

  • virtualenv: Das grundlegende Werkzeug zum Erstellen isolierter Python-Umgebungen.
  • Poetry: Ein All-in-One-Tool für Abhängigkeitsmanagement, Packaging und Veröffentlichung.
  • Pipenv: Ein Tool, das darauf abzielt, die besten Aspekte der Paketverwaltung in Python zu vereinen.
  • Anaconda: Eine weit verbreitete Plattform für Data Science, die leistungsstarke Funktionen zur Umgebungsverwaltung bietet.
  • UV: Ein extrem schneller Python-Paket-Installer und Resolver der nächsten Generation.

Am Ende dieses Labs werden Sie in der Lage sein, das passende Tool für die Anforderungen Ihres Projekts auszuwählen und anzuwenden.

virtualenv

In diesem Schritt lernen Sie, wie Sie virtualenv verwenden, um isolierte Python-Umgebungen zu erstellen und zu verwalten. virtualenv ist ein Werkzeug, mit dem Sie Python-Code in gekapselten Umgebungen testen können, ohne die globale Python-Installation mit projektspezifischen Bibliotheken zu belasten. Das Tool ist bereits für Sie vorinstalliert.

Erstellen Sie zunächst ein Verzeichnis für Ihre virtuellen Umgebungen und anschließend eine neue Umgebung namens HelloWorld. Öffnen Sie ein Terminal in der WebIDE und führen Sie die folgenden Befehle aus:

mkdir -p ~/.virtualenvs
virtualenv ~/.virtualenvs/HelloWorld

Sie sehen eine Ausgabe, während die Umgebung erstellt wird. Die virtuelle Umgebung wird im Verzeichnis ~/.virtualenvs/HelloWorld angelegt.

created virtual environment CPython3.10.12.final.0-64 in 257ms
  creator CPython3Posix(dest=/home/labex/.virtualenvs/HelloWorld, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/labex/.local/share/virtualenv)
    added seed packages: pip==24.0, setuptools==69.5.1, wheel==0.43.0
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator

Aktivieren wir nun die virtuelle Umgebung. Ihr Terminal-Prompt wird sich ändern und (HelloWorld) anzeigen, was signalisiert, dass die Umgebung aktiv ist. Alles, was Sie nun mit pip installieren, ist spezifisch für diese Umgebung und beeinträchtigt nicht Ihre globale Python-Installation.

source ~/.virtualenvs/HelloWorld/bin/activate

Nach der Aktivierung sieht Ihr Prompt wie folgt aus:

(HelloWorld) labex:project/ $

Um die virtuelle Umgebung zu verlassen, verwenden Sie einfach den Befehl deactivate:

deactivate

Beachten Sie, dass das Präfix (HelloWorld) aus Ihrem Terminal-Prompt verschwindet.

Um die Umgebung später erneut zu aktivieren, können Sie den source-Befehl von überall aus wieder verwenden:

source ~/.virtualenvs/HelloWorld/bin/activate

Ihr Prompt ändert sich wieder, und Sie befinden sich erneut in der HelloWorld-Umgebung, bereit für die Arbeit an Ihrem Projekt.

Poetry

In diesem Schritt erkunden Sie Poetry, ein modernes Tool für Abhängigkeitsmanagement und Packaging in Python. Es ermöglicht Ihnen, die Bibliotheken, von denen Ihr Projekt abhängt, zu deklarieren, und verwaltet (installiert/aktualisiert) diese für Sie. Poetry ist in dieser Umgebung bereits installiert.

Stellen Sie sicher, dass Sie Ihre virtuelle Umgebung deaktiviert haben.

deactivate

Erstellen wir zunächst ein neues Projekt mit Poetry. Dieser Befehl richtet eine Standard-Verzeichnisstruktur für Ihr Projekt ein.

poetry new my-poetry-project

Dieser Befehl erstellt ein neues Verzeichnis namens my-poetry-project mit der folgenden Struktur:

my-poetry-project
├── pyproject.toml
├── README.md
├── my_poetry_project
│   └── __init__.py
└── tests
    ├── __init__.py
    └── test_my_poetry_project.py

Die wichtigste Datei hierbei ist pyproject.toml, die Ihr Projekt und dessen Abhängigkeiten steuert. Lassen Sie uns den ursprünglichen Inhalt anzeigen.

cat my-poetry-project/pyproject.toml

Die Ausgabe sieht in etwa so aus:

[tool.poetry]
name = "my-poetry-project"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.10"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

Wechseln Sie nun in Ihr neues Projektverzeichnis:

cd my-poetry-project

Um eine neue Abhängigkeit hinzuzufügen, verwenden Sie den Befehl poetry add. Poetry findet automatisch eine geeignete Version und fügt sie der pyproject.toml hinzu. Fügen wir die Bibliothek pendulum hinzu.

poetry add pendulum

Um alle in der pyproject.toml aufgeführten Abhängigkeiten zu installieren (z. B. beim Klonen eines Projekts), führen Sie aus:

poetry install

Um eine Abhängigkeit zu entfernen, verwenden Sie den Befehl poetry remove:

poetry remove pendulum

Dies entfernt das Paket und aktualisiert die Datei pyproject.toml entsprechend.

Pipenv

In diesem Schritt lernen Sie Pipenv kennen, ein Tool, das darauf abzielt, die besten Aspekte der Paketverwaltung in Python zu vereinen. Es erstellt und verwaltet automatisch eine virtualenv für Ihre Projekte und fügt Pakete zu Ihrer Pipfile hinzu bzw. entfernt sie, wenn Sie Pakete installieren oder deinstallieren.

Erstellen Sie zunächst ein Verzeichnis für Ihr neues Projekt und wechseln Sie hinein.

cd ~/project
mkdir my_pipenv_project
cd my_pipenv_project

Installieren wir nun ein Paket. Pipenv erstellt automatisch eine neue virtuelle Umgebung und eine Pipfile, um Ihre Abhängigkeiten zu verfolgen. Installieren wir die Bibliothek requests.

pipenv install requests

Nach Abschluss des Befehls sehen Sie zwei neue Dateien in Ihrem Verzeichnis: Pipfile und Pipfile.lock. Die Pipfile wird verwendet, um zu protokollieren, welche Abhängigkeiten Ihr Projekt benötigt. Überprüfen wir ihren Inhalt:

cat Pipfile

Die Ausgabe zeigt das Paket requests unter [packages].

[[source]]
url = "https://pypi.org/simple"
verify_ssl = false
name = "pypi"

[packages]
requests = "*"

[dev-packages]

[requires]
python_version = "3.10"

Um die mit Ihrem Projekt verknüpfte virtuelle Umgebung zu aktivieren, führen Sie aus:

pipenv shell

Ihr Terminal-Prompt ändert sich und zeigt an, dass Sie sich nun in der isolierten Umgebung des Projekts befinden.

Um ein Paket zu deinstallieren, können Sie den Befehl uninstall innerhalb der aktivierten Shell ausführen:

pipenv uninstall requests

Um die Shell der virtuellen Umgebung zu verlassen, geben Sie einfach exit ein:

exit

Anaconda

In diesem Schritt machen Sie sich mit Anaconda vertraut. Anaconda ist eine Python- und R-Distribution für wissenschaftliches Rechnen, die das Paketmanagement und die Bereitstellung vereinfacht. Der Paketmanager conda eignet sich hervorragend zum Erstellen und Verwalten von Umgebungen. Der Befehl conda ist in Ihrem Terminal verfügbar.

Erstellen wir zunächst eine neue Umgebung namens my_conda_env. Wir geben zudem die zu verwendende Python-Version an. Das Flag -y bestätigt automatisch alle Abfragen.

cd ~/project
conda create -n my_conda_env python=3.10 -y

Sobald die Umgebung erstellt ist, müssen Sie sie aktivieren, um sie nutzen zu können.

conda activate my_conda_env

Ihr Terminal-Prompt wird nun mit (my_conda_env) präfigiert, was anzeigt, dass die Umgebung aktiv ist. Alle Pakete, die Sie jetzt installieren, sind spezifisch für diese Umgebung. Installieren wir beispielhaft numpy.

conda install numpy -y

Wenn Sie mit der Arbeit in der Umgebung fertig sind, können Sie diese deaktivieren.

conda deactivate

Das Präfix verschwindet aus Ihrem Prompt und Sie kehren zur Basisumgebung zurück.

UV

In diesem Schritt entdecken Sie UV, einen extrem schnellen Python-Paket-Installer und Resolver von Astral, den Machern von Ruff. Es ist als direkter Ersatz für pip- und pip-tools-Workflows konzipiert und kann 10- bis 100-mal schneller sein. UV ist für Sie vorinstalliert.

Beginnen wir mit der Initialisierung eines neuen Projekts. Der Befehl uv init erstellt eine pyproject.toml-Datei und eine virtuelle Umgebung in einem .venv-Verzeichnis.

cd ~/project
uv init my-uv-project

Wechseln Sie nun in das neu erstellte Projektverzeichnis.

cd my-uv-project

Um eine Abhängigkeit hinzuzufügen, verwenden Sie den Befehl uv add. Dies ähnelt poetry add oder npm install. Fügen wir die Bibliothek requests hinzu.

uv add requests

UV erkennt und verwendet automatisch die virtuelle Umgebung im aktuellen Verzeichnis. Sie können Befehle innerhalb dieser verwalteten Umgebung mit uv run ausführen. Überprüfen wir die Python-Version innerhalb der Umgebung.

uv run python --version

Sie sollten die Python-Version der virtuellen Umgebung sehen, nicht die globale.

Wenn Sie die Shell lieber manuell aktivieren möchten, können Sie dies genau wie bei einem Standard-venv tun:

source .venv/bin/activate

Ihr Prompt ändert sich und zeigt (.venv) an, was bedeutet, dass die Umgebung aktiv ist. Um die aktivierte Shell zu verlassen, verwenden Sie den Befehl deactivate.

deactivate

UV vereinfacht Workflows durch die Bereitstellung einer einzigen, unglaublich schnellen Binärdatei für das Paket- und Umgebungsmanagement.

Zusammenfassung

In diesem Lab haben Sie praktische Erfahrungen mit verschiedenen essenziellen Tools zur Verwaltung von virtuellen Python-Umgebungen und Abhängigkeiten gesammelt. Die korrekte Verwaltung Ihrer Projektumgebung ist eine grundlegende Fähigkeit für jeden Python-Entwickler, um Reproduzierbarkeit zu gewährleisten und Konflikte zu vermeiden.

Sie haben gelernt:

  • virtualenv zum Erstellen, Aktivieren und Verwalten grundlegender, isolierter Umgebungen zu verwenden.
  • Poetry für einen einheitlichen Workflow zu nutzen, der die Projekterstellung, das Abhängigkeitsmanagement und das Packaging über die pyproject.toml-Datei abwickelt.
  • Pipenv einzusetzen, um Anwendungsabhängigkeiten deklarativ mit einer Pipfile zu verwalten und so die Einrichtung einer Entwicklungsumgebung zu vereinfachen.
  • Mit Anaconda (conda) Umgebungen zu erstellen und zu verwalten – ein Tool, das besonders in der Data-Science-Community für den robusten Umgang mit komplexen Paketen beliebt ist.
  • UV zu entdecken, das neue, extrem schnelle Tool, das Paketinstallation, Auflösung und Umgebungsmanagement in einer einzigen Binärdatei vereint.

Jedes Tool hat seine Stärken, und die beste Wahl hängt oft von den spezifischen Anforderungen Ihres Projekts und Ihren persönlichen Workflow-Präferenzen ab. Sie sind nun bestens gerüstet, um eine fundierte Entscheidung zu treffen und Ihre Python-Projekte effektiv zu verwalten.