[Für Anfänger] Python-Paketverwaltung gründlich erklärt | pip, venv und Poetry im Vergleich

目次

1. Einführung

Warum ist die Paketverwaltung in Python wichtig?

Python ist eine Programmiersprache, die aufgrund ihrer einfachen und lesbaren Syntax von Anfängern bis hin zu professionellen Ingenieuren weit verbreitet ist. Wenn man jedoch mit der Entwicklung beginnt, stößt man oft auf Probleme wie „Dieser Code funktioniert aus irgendeinem Grund nicht“ oder „Modul nicht gefunden“. Der Grund dafür liegt meist in der Verwaltung der Pakete. In Python ist es selten, dass die Entwicklung nur mit der Standardbibliothek abgeschlossen werden kann; in vielen Fällen installiert und verwendet man zusätzliche externe Pakete (Bibliotheken). Wenn zu diesem Zeitpunkt der Mechanismus zum korrekten Installieren, Verwalten und Aktualisieren von Paketen nicht solide ist, kann das Projekt kaputtgehen oder die Zusammenarbeit mit anderen behindert werden.

Die Welt der Verwaltung, die nicht mit „pip install“ endet

Für jemanden, der zum ersten Mal Python verwendet, ist der Gedanke „Mit pip install installieren und fertig“ ganz natürlich. Tatsächlich kann man damit Bibliotheken einfach hinzufügen. Wenn jedoch die Anzahl der Projekte zunimmt,
  • Konflikte zwischen Paketversionen in anderen Projekten
  • Bugs durch alte Versionen
  • Funktioniert nur nicht in der Produktionsumgebung
solchen Problemen begegnen. Das sind typische Probleme, die durch Mangel an Wissen in der Paketverwaltung entstehen.

Was Sie in diesem Artikel lernen können

In diesem Artikel erklären wir die Paketverwaltung in Python systematisch und für Anfänger verständlich. Konkret behandeln wir folgende Inhalte:
  • Was ist ein „Paket“ in Python?
  • Wie man Tools wie pip, venv, Poetry usw. einsetzt
  • Gründe für die Verwendung von virtuellen Umgebungen und deren Nutzung
  • Häufige Fehler in der Paketverwaltung und deren Behebung
  • Häufig gestellte Fragen und deren Antworten
Nicht nur eine Auflistung der Verwendungen, sondern wir gehen auch auf den Hintergrund ein, warum das notwendig ist und wie man wählt.

2. Was ist ein Paket in Python?

Was ist ein Paket? Unterschied zu Modulen

In Python bezeichnet ein „Paket“ eine Bibliothek in Form einer Verzeichnisstruktur, die mehrere Module (Python-Dateien) zusammenfasst. In Python werden nützliche Funktionen und Klassen zur Erhöhung der Wiederverwendbarkeit als Module in Dateien bereitgestellt, und die weitere Organisation und Strukturierung dieser ergibt ein „Paket“. Zum Beispiel enthält das beliebte Paket requests für HTTP-Kommunikation mehrere Dateien (= Module), die zusammen als ein Paket funktionieren.
BegriffInhalt
ModulPython-Datei mit .py-Erweiterung (z. B. math.py)
PaketOrdnerstruktur, die Module zusammenfasst (einschließlich __init__.py)

Warum Pakete verwenden?

Beim Entwickeln in Python sind Pakete unverzichtbar. Funktionen, die die Standardbibliothek nicht abdeckt (z. B. Datenanalyse, maschinelles Lernen, Web-Kommunikation), können durch die Verwendung externer Pakete einfach eingeführt und implementiert werden. Darüber hinaus gibt es in der Python-Community zahlreiche ausgezeichnete Pakete, die zu effizienter Entwicklung und der Erstellung hochwertigen Codes beitragen.

Was ist der Python Package Index (PyPI)?

Viele Pakete werden im offiziellen Repository „PyPI (Python Package Index)“ veröffentlicht. PyPI ist eine riesige Datenbank, die Python-Pakete von Entwicklern weltweit sammelt, und mit dem pip-Befehl können Pakete von dort einfach installiert werden.
pip install numpy
Wenn ein solcher Befehl ausgeführt wird, sucht pip auf PyPI nach dem numpy-Paket, lädt es herunter und installiert es.

Wie pip Pakete installiert

pip ist das offizielle Paketverwaltungstool von Python und funktioniert in folgendem Ablauf.
  1. PyPI (oder eine angegebene URL) referenzieren und Paketinformationen abrufen
  2. Das neueste oder ein spezifiziertes Version des Pakets herunterladen
  3. Falls benötigte Abhängigkeitspakete vorhanden sind, diese ebenfalls gleichzeitig installieren
  4. In das site-packages-Verzeichnis der lokalen Umgebung speichern
Nach der Installation kann in Python-Skripten wie folgt verwendet werden.
import numpy as np

arr = np.array([1, 2, 3])
print(arr)

Zusammenfassung: Das Verständnis von Paketen ist der erste Schritt zur Vermeidung von Problemen

Durch das Verständnis des Paketmechanismus in Python können häufige Probleme wie „Modul nicht gefunden“ oder „Funktioniert nicht mit alter Version“ im Voraus vermieden werden. Im nächsten Abschnitt erklären wir detaillierter das grundlegende Tool „pip“ zur Einführung und Verwaltung solcher Pakete.
年収訴求

3. Das grundlegende Paketverwaltungstool „pip“

Was ist pip?

pip ist das grundlegendste Paketverwaltungstool in Python. Ab Python 3.4 ist es standardmäßig installiert und kann ohne zusätzliche Konfiguration verwendet werden. Seine Hauptrollen umfassen die Installation, Deinstallation, Aktualisierung und Anzeige von externen Paketen usw. Der Name pip ist eine Abkürzung für „Pip Installs Packages“ und ist, wie der Name schon sagt, ein Kommandozeilen-Tool zur Installation von Python-Paketen.

Grundlegende Befehle und Verwendung von pip

Im Folgenden werden die häufigsten Befehle von pip und ihre Verwendungszwecke zusammengefasst.
BefehlBeschreibung
pip install PaketnamePaket installieren
pip uninstall PaketnamePaket deinstallieren (löschen)
pip listListe der derzeit installierten Pakete anzeigen
pip show PaketnameDetaillierte Informationen zu einem angegebenen Paket anzeigen
pip freezeInstallierte Pakete und Versionen anzeigen (wird später für requirements.txt verwendet)
pip install -r requirements.txtMehrere Pakete batchweise installieren (praktisch beim Teilen von Projekten)
Beispiel zur Verwendung (Kommandozeile):
pip install requests
pip list
pip uninstall requests

Was ist requirements.txt?

requirements.txt ist eine Datei, die die in einem Projekt verwendeten Pakete und deren Versionsinformationen zusammenfasst. Bei der Entwicklung durch mehrere Personen oder beim Verschieben eines Projekts in eine andere Umgebung ist diese Datei sehr praktisch. Der Inhalt sieht in etwa so aus:
requests==2.31.0
numpy>=1.24
Mit dieser Datei können die Pakete mit dem folgenden Befehl batchweise installiert werden.
pip install -r requirements.txt

Aktualisierung und Versionsspezifikation

Mit pip können Pakete aktualisiert oder mit einer spezifischen Version installiert werden.
  • Falls die neueste Version aktualisiert werden soll:
pip install --upgrade Paketname
  • Installation mit einer spezifischen Version:
pip install Paketname==1.2.3

Probleme mit Abhängigkeiten und Hinweise

pip ist einfach und benutzerfreundlich, hat jedoch Schwächen bei der Verwaltung komplexer Abhängigkeiten. Zum Beispiel kann es Konflikte geben, wenn ein Paket eine bestimmte Version erfordert und ein anderes Paket eine andere Version verlangt. Daraus resultieren möglicherweise
  • Fehler bei der Installation
  • Fehler zur Laufzeit
  • Beschädigung anderer Pakete
solche Probleme. Um solche Probleme zu vermeiden, ist die Einführung von virtuellen Umgebungen (venv) oder fortschrittlicheren Tools (wie Poetry), die später besprochen werden, wirksam.

Zusammenfassung: pip ist grundlegend, aber nicht überbewerten

pip ist die Basis der Python-Entwicklung und reicht für kleine Skripte oder persönliche Entwicklungen oft aus. Bei Projekten mit komplexen Abhängigkeiten oder Unterschieden in der Entwicklungsumgebung kann es jedoch schwierig werden, nur mit pip zu verwalten. Im nächsten Abschnitt werden wir detailliert auf die Verwendung von „virtuellen Umgebungen (venv)“ eingehen, um solche Probleme zu lösen.

4. Gründe und Verwendung von virtuellen Umgebungen (venv)

Warum sind virtuelle Umgebungen notwendig?

Beim Entwickeln mit Python unterscheiden sich die Arten und Versionen der verwendeten Pakete oft je nach Projekt. Zum Beispiel:
  • In Projekt A wird Django 3.2 verwendet
  • In Projekt B wird Django 4.0 verwendet
In solchen Fällen entsteht bei einer systemweiten Installation der Pakete das Problem, dass das Upgraden eines die Funktionalität des anderen beeinträchtigt. Um das zu vermeiden, werden virtuelle Umgebungen eingeführt. Durch die Verwendung von virtuellen Umgebungen kann eine unabhängige Paketverwaltung pro Projekt erfolgen, was eine Entwicklung ohne Interferenz mit anderen Umgebungen ermöglicht.

Was ist venv?

venv ist das Standard-Tool von Python zur Erstellung virtueller Umgebungen. Es ist seit Python 3.3 standardmäßig integriert und erfordert keine zusätzliche Installation. Mit venv können unabhängige Python-Ausführungs-Umgebungen und Paket-Sammlungen pro Projekt erstellt werden.

Grundlegende Operationen von venv

1. Erstellung einer virtuellen Umgebung
Führen Sie den folgenden Befehl in einem beliebigen Projektordner aus.
python -m venv venv
Mit diesem Befehl wird ein Ordner namens venv erstellt und die virtuelle Umgebung eingerichtet (der Ordnername ist beliebig, aber konventionell wird venv verwendet).
2. Aktivierung der virtuellen Umgebung
  • Windows :
venv/Scripts/activate
  • macOS / Linux :
source venv/bin/activate
Bei erfolgreicher Aktivierung wird am Anfang des Terminals etwas wie (venv) angezeigt.
3. Deaktivierung der virtuellen Umgebung
Wenn Sie die virtuelle Umgebung verlassen möchten, führen Sie den folgenden Befehl aus.
deactivate
4. Löschen der virtuellen Umgebung
Da eine virtuelle Umgebung nur ein Ordner ist, reicht es, das venv-Verzeichnis zu löschen.
rm -r venv  # mac/Linux
rd /s /q venv  # Windows

Sichere Umgebungskonfiguration mit venv + pip

Wenn pip install in einem aktivierten virtuellen Umfeld ausgeführt wird, werden die Pakete in der virtuellen Umgebung installiert und beeinflussen das gesamte System nicht. Dadurch können negative Auswirkungen auf Produktionsumgebungen oder andere Projekte verhindert werden.
source venv/bin/activate
pip install requests
Die in diesem Zustand installierten Bibliotheken werden nach dem Verlassen der virtuellen Umgebung (deactivate) nicht mehr verfügbar sein.

Integration mit IDEs (VSCode usw.)

In Editoren wie Visual Studio Code (VSCode), die von vielen Ingenieuren heutzutage verwendet werden, gibt es Funktionen zur automatischen Erkennung virtueller Umgebungen und zum Wechseln der Python-Ausführungs-Umgebung pro Projekt. Die Kombination mit venv verbessert die Entwicklungs-Effizienz und die Stabilität der Umgebung erheblich.

Zusammenfassung: Virtuelle Umgebungen sind eine Grundfertigkeit in der Python-Entwicklung

Die Python-virtuellen Umgebungen (venv) sind eine notwendige Fertigkeit, um Versionskonflikte von Paketen und Umgebungsprobleme zu vermeiden. Durch die Kombination mit pip kann eine sichere und reproduzierbare Entwicklungsumgebung eingerichtet werden.

5. Die Nutzung des Abhängigkeitsmanagement-Tools „Poetry“

Gründe, warum pip und venv allein nicht ausreichen

pip und venv sind grundlegende Tools in der Python-Entwicklung, aber wenn Projekte komplexer werden oder Team-Entwicklung erforderlich ist, treten folgende Herausforderungen auf.
  • Wenn Abhängigkeiten zunehmen, wird requirements.txt oft manuell verwaltet
  • Es ist schwierig, den Paketstatus in mehreren Umgebungen zu reproduzieren
  • Das Veröffentlichen und Bauen von Paketen ist umständlich
Um diese Herausforderungen zu bewältigen, gibt es das Paket- und Projektmanagement-Tool namens Poetry (Poetry).

Was ist Poetry?

Poetry ist ein modernes Tool, das die Abhängigkeiten, virtuellen Umgebungen und Paketveröffentlichungen von Python-Projekten integriert verwalten kann. Es hat folgende Merkmale:
  • Abhängigkeitsinformationen zentral in pyproject.toml verwalten
  • Automatische Erstellung und Verwaltung virtueller Umgebungen
  • Keine manuelle Konfiguration von pip oder venv erforderlich
  • Mögliche Paket-Builds und -Veröffentlichungen (PyPI-kompatibel)
Mit Poetry können Sie eine Entwicklungsumgebung schaffen, in der Sie sich auf das Schreiben von Code konzentrieren können.

Installationsmethode für Poetry

Poetry wird mit dem offiziellen Skript installiert. Durch Ausführen des folgenden Befehls wird es OS-spezifisch installiert.
curl -sSL https://install.python-poetry.org | python3 -
Nach der Installation können Sie die Version mit dem folgenden Befehl überprüfen:
poetry --version

Projekt-Erstellung und Abhängigkeitsverwaltung mit Poetry

1. Neuerstellung eines Projekts
poetry new Projektname
Mit diesem Befehl wird eine Vorlage für ein Python-Projekt wie folgt automatisch generiert.
Projektname/
├── pyproject.toml
├── README.rst
├── Projektname/
│   └── __init__.py
└── tests/
    └── __init__.py
2. Verwendung von Poetry in einem bestehenden Projekt
Führen Sie das Folgende in einem vorhandenen Ordner aus:
poetry init
Abhängigkeiten werden interaktiv registriert, und pyproject.toml wird generiert.
3. Hinzufügen und Entfernen von Paketen
  • Hinzufügen (Installieren):
poetry add requests
  • Entfernen:
poetry remove requests
4. Automatische Erstellung und Ausführung der virtuellen Umgebung
Poetry erstellt automatisch eine virtuelle Umgebung, wenn Abhängigkeiten hinzugefügt werden. Mit dem Folgenden können Sie in diese Umgebung eintreten:
poetry shell
In der virtuellen Umgebung können Python und pip verwendet werden.
5. Sicherstellung der Reproduzierbarkeit durch Lock-Datei
Poetry speichert die Abhängigkeitsinformationen in einer Datei namens poetry.lock. Dadurch können andere Entwickler genau dieselbe Umgebung reproduzieren.
poetry install
Mit diesem Befehl kann eine genaue Umgebung basierend auf pyproject.toml und poetry.lock aufgebaut werden.

Die Rolle von pyproject.toml

Bei Poetry werden alle Einstellungen in einer einzigen Datei pyproject.toml zusammengefasst, ohne die herkömmlichen setup.py oder requirements.txt zu verwenden. Beispiel:
[tool.poetry]
name = "myproject"
version = "0.1.0"
description = ""
authors = ["Ihr Name <you@example.com>"]
[tool.poetry.dependencies]
python = "^3.10" requests = "^2.31.0"
[build-system]
requires = ["poetry-core"] build-backend = "poetry.core.masonry.api"
Durch diese Struktur kann eine ideale Umgebung realisiert werden, in der der Projektstatus mit Code verwaltet wird.

Zusammenfassung: Poetry ist ein starker Verbündeter für moderne Entwicklung

Poetry ist ein mächtiges Entwicklungsunterstützungstool, das von der komplizierten Verwaltung mit herkömmlichem pip und venv befreit. Besonders empfehlenswert für:
  • Personen, die in Teams entwickeln
  • Personen, die Paketabhängigkeiten klar machen wollen
  • Personen, die den Aufbau virtueller Umgebungen automatisieren wollen
  • Personen, die Pakete zukünftig veröffentlichen wollen

6. Vergleich mit anderen Tools (Poetry vs. pipenv vs. conda)

Paketverwaltungstools sollten je nach Verwendungszweck ausgewählt werden

Für die Paketverwaltung in Python gibt es neben pip und venv mehrere nützliche Tools. Als repräsentative Beispiele gelten die folgenden drei:
  • Poetry: Modernes Tool mit Stärken in der Abhängigkeitsverwaltung und beim Paketbau
  • Pipenv: Zwischenform von pip und venv. Benutzerfreundlich für Anfänger, aber etwas instabil
  • conda: Stark in der Umgebungsbau für Data Science, kann auch Nicht-Python verwalten
Jedes Tool hat Stärken und Schwächen, daher ist es wichtig, das optimale Tool je nach Zweck des Projekts und Entwicklungsstil auszuwählen.

Vergleichstabelle der Tools

Im Folgenden werden die Hauptunterschiede von Poetry, Pipenv und conda in einer Tabelle zusammengefasst:
AspektPoetryPipenvconda
Verwaltung virtueller UmgebungenAutomatisch erstellt und verwaltetAutomatisch erstellt und verwaltetEigene Umgebung (conda)
Klärung von Abhängigkeitenpyproject.toml & poetry.lockPipfile & Pipfile.lockenvironment.yml
Unterstützung für andere Sprachen als Python◯ (R, C, Java usw.)
Paketbau und -veröffentlichung◯ (PyPI-kompatibel)△ (Veröffentlichung nicht möglich)
Cross-Platform-Unterstützung△ (einige Fehler vorhanden)
Modernität und Konsistenz in der Entwicklung△ (etwas schwerfällig)
HauptverwendungszweckeWeb-Entwicklung und -veröffentlichungEntwicklung für AnfängerDatenanalyse und wissenschaftliches Rechnen

Merkmale der Tools und geeignete Fälle

Poetry: Realisiert Best Practices für Entwickler
Poetry ist das Tool, das den größten Wert auf „Python-Entwicklung als Projekt“ legt. Da Abhängigkeitsverwaltung, Automatisierung virtueller Umgebungen, Paketveröffentlichung usw. einheitlich verwaltet werden können, ist es sehr beliebt bei Mittel- bis Fortgeschrittenen. Geeignet für:
  • Personen, die Web-Apps oder APIs usw. mit Python ernsthaft entwickeln
  • Personen, die eigene Pakete auf PyPI veröffentlichen möchten
  • Personen in der Team-Entwicklung, die die Reproduzierbarkeit von Konfigurationsdateien priorisieren
Pipenv: Tool, das das Beste aus pip und venv kombiniert
Pipenv integriert die Funktionen von pip und venv und bietet eine benutzerfreundliche Oberfläche für Anfänger. Es verwaltet Abhängigkeiten in einem eigenen Format namens Pipfile und erstellt automatisch virtuelle Umgebungen. Allerdings hat die Update-Frequenz nachgelassen, und in einigen Umgebungen werden instabile Aktionen oder Fehler berichtet, weshalb in letzter Zeit zunehmend auf Poetry umgestiegen wird. Geeignet für:
  • Anfänger, die sich etwas an pip und venv gewöhnt haben
  • Personen, die mit Lernzwecken oder kleinen Projekten beginnen möchten
  • Personen, die intuitive Bedienung mit wenigen Befehlen bevorzugen
conda: Umfassende Verwaltung von Umgebungen inklusive Nicht-Python
conda ist ein Paketverwaltungstool aus der Anaconda-Distribution und kann nicht nur Python, sondern auch Umgebungen für R oder C usw. verwalten. Es wird insbesondere in der Wissenschaftlichen Rechnung und Datenanalyse geschätzt. Seine Fähigkeit zur Lösung von Paketabhängigkeiten ist außergewöhnlich hoch, was den Umgang mit komplexen Bibliotheken (NumPy, TensorFlow, OpenCV usw.) erleichtert – ein großer Vorteil. Geeignet für:
  • Personen, die es in Data Science, Machine Learning oder statistischer Analyse einsetzen möchten
  • Personen, die gleichzeitig Sprachen außer Python verwalten möchten
  • Personen in Windows-Umgebungen, die mit Paketabhängigkeiten zu kämpfen haben

Richtlinien zur Auswahl

Wenn Sie unsicher sind, hilft es, wie folgt zu denken.
  • Entwickler- und Veröffentlichungsorientiert → Poetry
  • Lernzweck und leichte Umgebung → Pipenv (oder venv + pip)
  • Datenanalyse und Mehrsprachen-Umgebung → conda

Zusammenfassung: Die Auswahl des Tools passend zum Zweck ist der Schlüssel zum Erfolg

Die Paketverwaltung in Python ist aufgrund der Vielfalt der Tools ein Bereich, in dem man leicht unsicher wird. Wenn man jedoch „worum es dabei geht“ klar hat, wird das optimale Tool von allein sichtbar. Poetry, Pipenv und conda haben jeweils Stärken und passende Szenarien. Durch die Auswahl passend zu Ihrem Entwicklungsstil oder Teamaufbau können Sie eine reibungslosere und reproduzierbarere Entwicklungsumgebung aufbauen.

7. Praktisches Beispiel: Schritte zur Umgebungseinrichtung pro Projekt

Warum sind die Schritte zur Umgebungseinrichtung wichtig?

Auch wenn Sie wissen, wie man Paketverwaltungstools verwendet, ist es sinnlos, wenn Sie nicht wissen, wie man in einem echten Projekt damit beginnt. Hier erklären wir die Schritte zur Einrichtung von Projekten in zwei Mustern, damit auch Anfänger ohne Verirrung vorankommen können.
  • pip + venv verwendete grundlegende Einrichtungsmethode
  • Poetry verwendete smarte Einrichtungsmethode

Muster ①: Projekteinrichtung mit pip + venv

Die grundlegendste Methode, empfohlen für Personen, die gerade mit Python begonnen haben. Schritt 1: Erstellen des Projektordners
mkdir my_project
cd my_project
Schritt 2: Erstellen und Aktivieren der virtuellen Umgebung
python -m venv venv
source venv/bin/activate  # Für Windows: venv\Scripts\activate
Schritt 3: Installieren der benötigten Pakete
pip install requests numpy
Schritt 4: Abhängigkeitspakete in requirements.txt auflisten
pip freeze > requirements.txt
Schritt 5: Deaktivieren der virtuellen Umgebung
deactivate
Mit dieser Konfiguration können andere Entwickler die Umgebung basierend auf requirements.txt reproduzieren:
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Muster ②: Projekteinrichtung mit Poetry

Mit Poetry entfällt die manuelle Verwaltung von virtuellen Umgebungen und Abhängigkeiten, was eine effiziente Entwicklung ermöglicht. Schritt 1: Initialisierung des Projekts
poetry new my_project
cd my_project
Dadurch wird automatisch eine solche Struktur generiert.
my_project/
├── pyproject.toml
├── README.rst
├── my_project/
│   └── __init__.py
└── tests/
    └── __init__.py
Schritt 2: Hinzufügen der benötigten Bibliotheken
poetry add requests numpy
Poetry erstellt zu diesem Zeitpunkt automatisch eine virtuelle Umgebung und protokolliert die Abhängigkeiten in pyproject.toml und poetry.lock. Schritt 3: In die virtuelle Umgebung wechseln (optional)
poetry shell
Schritt 4: Wie andere die Umgebung reproduzieren Beim Teilen des Projekts kann dieselbe Umgebung mit dem folgenden Befehl allein reproduziert werden:
poetry install
Dadurch werden alle Abhängigkeiten genau installiert und die virtuelle Umgebung automatisch generiert.

Welche Methode sollte man wählen?

SituationEmpfohlenes Tool
Zu Lernzwecken, zuerst mit Python vertraut werden wollenpip + venv
Team-Entwicklung, explizite Abhängigkeiten und Automatisierung erforderlichPoetry
Veröffentlichung oder Verteilung von Bibliotheken im BlickPoetry
Leichte temporäre Skripte oder Testspip (ohne virtuelle Umgebung) ist auch in Ordnung

Ergänzung: Integration mit IDEs wie VSCode

In IDEs wie Visual Studio Code oder PyCharm gibt es Funktionen, die virtuelle Umgebungen oder Poetry-Umgebungen automatisch erkennen. Wenn Sie den Projektordner öffnen, wird der passende Python-Interpreter ausgewählt, sodass Sie auch im Editor die Umgebung mühelos wechseln können.

Zusammenfassung: Konsistente Umgebungseinrichtung ist der Schlüssel zu Qualität und Reproduzierbarkeit

In der Python-Entwicklung ist es sehr wichtig, eine Umgebung zu schaffen, die unabhängig davon, wer sie erstellt, gleich funktioniert. Wie in diesem Beitrag vorgestellt, kann dies durch den korrekten Einsatz von pip + venv oder Poetry erreicht werden.

8. Häufige Fehler und Lösungswege

Warum treten Fehler bei der Paketverwaltung häufig auf?

Python ist eine flexible Sprache, aber aufgrund von Versionsunterschieden der Pakete, Abhängigkeiten und Unterschieden in virtuellen Umgebungen treten unerwartete Fehler häufig auf. Insbesondere für Anfänger gibt es mehrere typische Probleme. Hier stellen wir repräsentative Fehler und ihre Lösungsmethoden vor.

Fehler①:ModuleNotFoundError – Modul nicht gefunden

Fehlerinhalt:
ModuleNotFoundError: No module named 'requests'
Ursache:
  • Das Paket ist nicht installiert
  • Die virtuelle Umgebung ist nicht aktiviert
  • Ausführung in einer anderen Python-Umgebung
Lösung:
  • Überprüfen, ob das Paket in der richtigen Umgebung installiert wurde
pip install requests
  • Überprüfen und erneut aktivieren der virtuellen Umgebung
source venv/bin/activate  # oder venv\Scripts\activate
  • Bei Ausführung in IDEs wie VSCode die Auswahl des Python-Interpreters überprüfen

Fehler②:Permission denied oder Zugriffsverweigerung bei pip install

Fehlerinhalt(Beispiel):
PermissionError: [Errno 13] Permission denied: '/usr/lib/python3.x/site-packages/...'
Ursache:
  • Versuch, Pakete in der globalen Umgebung zu installieren
  • Ausführung durch einen Benutzer ohne Administratorrechte
Lösung:
  • Überprüfen, ob in der virtuellen Umgebung gearbeitet wird
  • Falls unbedingt in der globalen Umgebung ausgeführt werden muss, die--user-Option hinzufügen
pip install --user Paketname
  • Auf Mac/Linux: Für Operationen, die Administratorrechte erfordern, sudo verwenden(nicht empfohlen)

Fehler③:Versionskonflikt(Abhängigkeitskollision)

Fehlerinhalt(Beispiel):
ERROR: Cannot install X==1.2.0 and Y==2.0.0 because these package versions have incompatible dependencies.
Ursache:
  • Mehrere gleichzeitig zu installierende Pakete hängen von unterschiedlichen Versionen derselben Bibliothek ab
Lösung:
  • Tools wie pipdeptree verwenden, um Abhängigkeiten zu visualisieren und zu überprüfen
  • Tools wie Poetry oder conda nutzen, die Abhängigkeitskonsistenz automatisch lösen
  • Falls der Konflikt nicht gelöst werden kann, separate virtuelle Umgebungen verwenden

Fehler④:Installation aus requirements.txt schlägt fehl

Fehlerinhalt:
ERROR: Could not find a version that satisfies the requirement X==1.0.0
Ursache:
  • Die in requirements.txt angegebene Version existiert nicht oder ist veraltet
  • Inkompatibel mit der eigenen Python-Version
Lösung:
  • Auf PyPI die Existenz des Pakets und der Version überprüfen
  • Eine kompatible Version entsprechend der Python-Version angeben
  • Bei Verwendung von Poetry: poetry update für konsistente Abhängigkeiten aktualisieren

Fehler⑤:Virtuelle Umgebung funktioniert nicht richtig oder kann nicht aktiviert werden

Fehlerinhalt(Beispiel):
source: command not found
Ursache:
  • Verwendung von Unix-Befehlen auf Windows
  • Falscher Pfad bei der Erstellung der virtuellen Umgebung
Lösung:
  • OS-spezifische Aktivierungsbefehle für virtuelle Umgebungen überprüfen
# macOS / Linux
source venv/bin/activate

# Windows
venv\Scripts\activate
  • Falls die Umgebung beschädigt ist, löschen und neu erstellen
rm -r venv
python -m venv venv

Ergänzung:Probleme bei alter pip-Version

Wenn die pip-Version selbst veraltet ist, entspricht sie nicht den neuesten PyPI-Spezifikationen und Installationsfehler können auftreten. Lösung:
pip install --upgrade pip
Durch regelmäßige Upgrades lassen sich zukünftige Fehler leichter vermeiden.

Zusammenfassung:Fehler sind nicht furchterregend, wenn man die „Mechanismen“ kennt

Viele Fehler in der Paketverwaltung resultieren aus „Umgebung“, „Abhängigkeiten“ und „Python-Version“. Statt panisch alles Mögliche zu versuchen, ist es der kürzeste Weg zum Fortschritt in Python, die Fehlermeldung zu analysieren und die Mechanismen zu verstehen.

9. Häufig gestellte Fragen (FAQ)

Q1. Welches sollte ich verwenden, pip oder Poetry?

A. Für kleine Skripte oder Lernprojekte reicht die Kombination aus pip und venv aus. Allerdings ist bei der Entwicklung mit mehreren Personen oder wenn die Paketabhängigkeiten komplex werden, Poetry empfehlenswert, da es die Abhängigkeitsverwaltung einfacher macht und eine höhere Reproduzierbarkeit bietet.

Q2. Muss ich virtuelle Umgebungen unbedingt verwenden?

A. Es ist nicht zwingend erforderlich, aber dringend empfohlen. Ohne virtuelle Umgebungen wirkt sich das auf die gesamte System-Python-Umgebung aus und es können Probleme wie Konflikte mit Abhängigkeiten anderer Projekte auftreten.

Q3. Was ist der Unterschied zwischen pyproject.toml und requirements.txt?

A.
  • requirements.txt: Einfache Textdatei mit Abhängigkeitsliste für pip
  • pyproject.toml: Strukturierte Konfigurationsdatei für Tools wie Poetry (Abhängigkeiten + Metainformationen)
requirements.txt eignet sich für die Betonung der Reproduzierbarkeit der Installation, pyproject.toml für die Verwaltung der gesamten Projektstruktur.

Q4. Ist pipenv oder Poetry populärer?

A. Derzeit wird Poetry aktiver entwickelt und ist in Bezug auf Zuverlässigkeit und Funktionen überlegen. Pipenv war eine Zeit lang beliebt, aber aufgrund stagnierender Updates und zunehmender Fehlerberichte wechselt die Community zu Poetry.

Q5. Kann man conda und pip zusammen verwenden?

A. Grundsätzlich ja, aber Auf die Integrität der Abhängigkeiten muss geachtet werden. In einer conda-Umgebung sollten Pakete möglichst mit conda installiert werden und pip nur für Pakete verwendet werden, die in conda nicht verfügbar sind, um Probleme zu vermeiden.

Q6. Ich habe zu viele virtuelle Umgebungen erstellt und die Verwaltung ist kompliziert. Was tun?

A. Mit Poetry werden virtuelle Umgebungen automatisch erstellt und gelöscht, sodass der Aufwand für die manuelle Verwaltung erheblich reduziert wird. Um eine Liste der virtuellen Umgebungen oder deren Speicherorte anzuzeigen, können die folgenden Befehle verwendet werden:
poetry env list
poetry env remove <Umgebungsname>

Q7. Sollte man requirements.txt oder pyproject.toml in Git einbeziehen?

A. Ja, um die Reproduzierbarkeit des Projekts zu gewährleisten, sollten diese Dateien immer einbezogen werden. Dadurch können andere Entwickler die gleiche Umgebung einfach reproduzieren und die Team-Entwicklung verläuft reibungslos.

Q8. Kann man Pakete für Produktions- und Entwicklungsumgebungen getrennt verwalten?

A. Mit Poetry können Abhängigkeiten für Entwicklung und Produktion klar getrennt verwaltet werden. Zum Beispiel können Test-Frameworks nur für die Entwicklung installiert werden:
poetry add pytest --group dev
Dadurch müssen in der Produktionsumgebung unnötige Tools nicht installiert werden.

Q9. Was tun, wenn ein Fehler auftritt?

A. Lesen Sie zunächst die Fehlermeldung ruhig und überprüfen Sie die folgenden Punkte.
  • Ist die virtuelle Umgebung aktiviert?
  • Ist die verwendete Python-Version kompatibel?
  • Existiert das entsprechende Paket auf PyPI?
Zusätzlich empfehle ich, den Abschnitt „8. Häufige Fehler und Lösungen“ zu konsultieren.

Q10. Worauf sollte man bei der Entwicklung durch mehrere Personen achten?

A. Am wichtigsten ist es, die Umgebung reproduzierbar zu machen. Die folgenden Maßnahmen helfen, Probleme zu vermeiden:
  • Verwendung virtueller Umgebungen
  • Teilen von requirements.txt oder pyproject.toml / poetry.lock
  • Klare Angabe der Python-Version (z. B. Python 3.10 oder höher)
Mit Poetry lassen sich diese Anforderungen relativ einfach umsetzen.
侍エンジニア塾