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



