Website-Suche

Wie man Poetry installiert, um Python-Abhängigkeiten unter Ubuntu 22.04 zu verwalten


Einführung

Poetry ist ein Abhängigkeitsmanager für Python, der auch in der Lage ist, Ihre Python-Projekte für die Verteilung zu erstellen und zu paketieren. Als Abhängigkeitsmanager bietet es Werkzeuge zur Pflege konsistenter und abgegrenzter virtueller Umgebungen. Darüber hinaus verfügt es über Werkzeuge zur Integration in Workflows, die andere Formen des Abhängigkeitsmanagements verwenden, wie z.B. requirements.txt.

In diesem Tutorial werden Sie Poetry mit dem offiziellen Installationsskript installieren, ein Poetry-Projekt mit einer virtuellen Umgebung einrichten und dann die Abhängigkeiten Ihres Projekts hinzufügen und installieren.

Voraussetzungen

  • Ein Ubuntu 22.04-Server, eingerichtet gemäß unserem anfänglichen Servereinrichtungsleitfaden für Ubuntu 22.04, mit einem nicht-root-Benutzer mit sudo-Rechten und einer aktivierten Firewall.
  • Die neueste Version von Python 3, die auf Ihrem Rechner installiert ist, nachdem Sie Schritt 1 zur Installation von Python 3 und zur Einrichtung einer Programmierumgebung auf einem Ubuntu 22.04-Server befolgt haben.

Schritt 1 — Poetry installieren

Poetry wird mit einem offiziellen Installationsskript installiert, das auf der Poetry-Website bereitgestellt wird. Dieser Befehl lädt das Installationsskript herunter und führt dann die Installation von Poetry auf Ihrem System durch. Obwohl dieses Tutorial für einen Ubuntu 22.04-Server gedacht ist, kann dieses Installationsskript auch auf Linux, macOS und Windows mit WSL (Windows Subsystem for Linux) ausgeführt werden, das durch dieses Tutorial installiert werden kann. Geben Sie den folgenden Befehl ein:

  1. curl -sSL https://install.python-poetry.org | python3 -
…
[secondary_label Output]
Poetry (1.2.1) is installed now. Great!

To get started you need Poetry's bin directory (/home/sammy/.local/bin) in your `PATH`
environment variable.

Add `export PATH="/home/sammy/.local/bin:$PATH"` to your shell configuration file.

Alternatively, you can call Poetry explicitly with `/home/sammy/.local/bin/poetry`.
…

Sobald die Installation abgeschlossen ist, wird Poetry Sie auffordern, dessen Bin-Ordner zu Ihrem PATH hinzuzufügen, um die Verwendung von poetry in Ihrer Befehlszeile zu ermöglichen. Unter Ubuntu mit Bash kann dies erfolgen, indem Sie die Datei ~/.bashrc mit nano oder Ihrem bevorzugten Texteditor öffnen:

  1. nano ~/.bashrc

Fügen Sie die folgende Zeile ans Ende der Datei hinzu:

. . .
export PATH="/home/sammy/.local/bin:$PATH"

Speichern Sie die Datei und verlassen Sie sie. Mit nano kann dies erfolgen, indem Sie CTRL+X drücken, um zu beenden, und Y, um Änderungen zu speichern.

Als nächstes wenden Sie die Änderungen auf Ihre aktuelle Sitzung an:

  1. source ~/.bashrc

Um zu überprüfen, ob der poetry-Befehl jetzt verfügbar ist, geben Sie Folgendes ein, um die aktuelle Poetry-Version anzuzeigen:

  1. poetry --version
Poetry (version 1.2.1)

Jetzt haben Sie eine funktionierende Installation von Poetry und können mit der Einrichtung eines Poetry-Projekts fortfahren.

Schritt 2 — Einrichten eines Poesieprojekts

Beginnen Sie mit der Erstellung eines neuen Poetry-Projekts. Dieses Projekt wird mit der virtuellen Umgebung geliefert, die beim Installieren und Verwalten Ihrer Abhängigkeiten verwendet wird. Dieses Tutorial verwendet den Projektname sammy_poetry, aber Sie können gerne Ihren bevorzugten Namen wählen.

  1. poetry new sammy_poetry

Navigieren Sie als Nächstes in Ihr neues Projektverzeichnis:

  1. cd sammy_poetry

Ihr neues Poesie-Projekt mit den notwendigen Boilerplate-Dateien wurde jetzt erstellt. Um Ihre neu erstellten Projektdateien anzuzeigen, verwenden Sie den Befehl ls:

  1. ls
README.md  dist  pyproject.toml  sammy_poetry  tests

Hinweis: Wenn Sie ein bestehendes Projekt haben, das Sie verwenden möchten, können Sie einen anderen Befehl verwenden, um Poetry zu veranlassen, es als Projekt zu erkennen. Navigieren Sie zu dem Verzeichnis Ihres bestehenden Projekts und geben Sie dann diesen Befehl ein:

  1. poetry init

Dies wird alle notwendigen Dateien in Ihrem bestehenden Projekt erstellen, und Sie können mit diesem Tutorial fortfahren, als ob es sich um ein neues Projekt handelt.

Schritt 3 — Abhängigkeiten hinzufügen

Bevor Sie beginnen, Abhängigkeiten zu Ihrem Projekt hinzuzufügen, sollten Sie sich zunächst die Datei ansehen und verstehen, die Poetry verwendet, um Ihre Abhängigkeiten zu halten. In Ihrem Poetry-Projektverzeichnis befindet sich eine automatisch generierte pyproject.toml-Datei, die die Liste Ihrer Abhängigkeiten enthält. Öffnen Sie sie und prüfen Sie sie mit den folgenden Informationen:

  1. nano pyproject.toml
[tool.poetry]
name = "sammy-poetry"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"
packages = [{include = "sammy_poetry"}]

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


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

Neben den Abhängigkeiten, die unter tool.poetry.dependencies aufgeführt sind, gibt es auch Metadaten unter tool.poetry. Sie können diese Metadaten gerne mit Ihren eigenen Informationen wie Name, E-Mail und Projektbeschreibung anpassen. Der Block build-system enthält derzeit Spezifikationen, wie Poetry Ihre Pakete bauen wird, und kann vorerst unberührt gelassen werden.

Ein bemerkenswerter Punkt ist, dass Python 3.10, obwohl es die neueste Version ist, ressourcenintensiv sein kann und je nach System ein Problem darstellen kann. Die meisten Python-Bibliotheken benötigen mindestens Version 3.8. Wenn Sie die Python-Version ändern möchten, die Ihr Projekt als Abhängigkeit verwendet, wird das Festlegen von Versionsabhängigkeiten in Schritt 4 dieses Tutorials behandelt.

In seinem aktuellen Zustand hat Ihr Projekt keine Abhängigkeiten außer Python selbst. Poetry kann neue Abhängigkeiten direkt über die Kommandozeile zu Ihrem Projekt hinzufügen. Durch die Verwendung des poetry add-Befehls fügt Poetry sowohl eine Abhängigkeit zu Ihrem tool.poetry.dependencies-Block hinzu als auch installiert die Abhängigkeit zur gleichen Zeit.

Nachdem Sie Ihre pyproject.toml Datei überprüft haben, schließen Sie Ihren Editor. Als Beispiel werden Sie die beliebte Python HTTP-Bibliothek 'requests' zu den Abhängigkeiten Ihres Projekts hinzufügen und sie mit dem add-Befehl installieren. Diese Bibliothek ermöglicht es Ihnen, HTTP-Anfragen mit minimalem Boilerplate-Code zu senden und ist nützlich für Anwendungen, die über HTTP kommunizieren, obwohl jedes beliebige Paket für die Zwecke dieser Demonstration ausreicht. Geben Sie folgenden Befehl ein:

  1. poetry add requests
Creating virtualenv sammy-poetry-i9Ouy_MV-py3.10 in /home/sammy/.cache/pypoetry/virtualenvs
Using version ^2.28.1 for requests

Updating dependencies
Resolving dependencies... (0.3s)

Writing lock file

Package operations: 5 installs, 0 updates, 0 removals

  • Installing certifi (2022.9.24)
  • Installing charset-normalizer (2.1.1)
  • Installing idna (3.4)
  • Installing urllib3 (1.26.12)
  • Installing requests (2.28.1)

Zusätzlich zum Hinzufügen zu Ihrer pyproject.toml-Datei und der Installation von requests kümmert sich der add-Befehl auch um die Initialisierung einer virtuellen Umgebung. Darüber hinaus hat requests eigene Abhängigkeiten. Poetry installiert automatisch all diese Abhängigkeiten, bevor es requests selbst installiert.

Ihre pyproject.toml Datei wird mit Folgendem aktualisiert:

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

Dies stellt sicher, dass requests immer installiert ist. Das ^ bedeutet, dass es die minimale akzeptable Version ist, die installiert werden kann, und höhere Versionen ebenfalls akzeptabel wären.

Schritt 4 — Abhängigkeiten entfernen und festpinnen

Um Konsistenz zwischen Ihren derzeit installierten Abhängigkeiten und den Abhängigkeiten, die Sie in Ihrer pyproject.toml Datei aufgeführt haben, zu gewährleisten, verwendet Poetry eine Lock-Datei. Poetry liest während des Installationsprozesses direkt aus dieser Datei, was bedeutet, dass das direkte Ändern Ihrer pyproject.toml Datei, um Ihre Abhängigkeiten zu ändern, einige Fehler oder Warnungen wie diese auslösen kann:

. . .
Warning: poetry.lock is not consistent with pyproject.toml. You may be getting improper dependencies. Run `poetry lock [--no-update]` to fix it.
. . .

Wenn Sie also eine Abhängigkeit entfernen oder deren Version bearbeiten müssen, sollten Sie den Befehl poetry remove verwenden. Obwohl es möglich ist, die Datei pyproject.toml manuell zu bearbeiten, müssen Sie die Lock-Datei berücksichtigen und Ihre virtuelle Umgebung manuell aktivieren. Wenn Sie also die Version von requests ändern möchten, entfernen Sie es zuerst mit diesem Befehl:

  1. poetry remove requests
Updating dependencies
Resolving dependencies... (0.1s)

Writing lock file

Package operations: 0 installs, 0 updates, 5 removals

  • Removing certifi (2022.9.24)
  • Removing charset-normalizer (2.1.1)
  • Removing idna (3.4)
  • Removing requests (2.28.1)
  • Removing urllib3 (1.26.12)

Jetzt, da requests entfernt wurde, können Sie es als feste Abhängigkeit erneut hinzufügen. Bei Abhängigkeiten möchten Sie oft eine Bibliothek für Ihr Projekt auf einer bestimmten Version halten. Dies liegt oft an Kompatibilitätsproblemen, da Bibliotheken im Laufe der Zeit Änderungen erfahren, und kann hilfreich sein, um Ihr Projekt konsistent zu halten. Dies wird als Festlegen von Abhängigkeiten bezeichnet.

Als Beispiel werden Sie requests auf eine andere Version als die neueste festlegen, die standardmäßig beim Ausführen des add-Befehls verwendet wird. Stattdessen werden Sie es auf 2.26.0 festlegen, das eine frühere, gültige Version ist, wie sie in der PyPI-Historie von requests zu finden ist:

  1. poetry add requests@2.26.0
Updating dependencies
Resolving dependencies... (0.3s)

Writing lock file

Package operations: 5 installs, 0 updates, 0 removals

  • Installing certifi (2022.9.24)
  • Installing charset-normalizer (2.0.12)
  • Installing idna (3.4)
  • Installing urllib3 (1.26.12)
  • Installing requests (2.26.0)

Jetzt finden Sie in Ihrer pyproject.toml-Datei:

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

Dies legt fest, dass requests immer konkret in der Version 2.26.0 installiert wird.

Schlussfolgerung

In diesem Tutorial haben Sie Poetry installiert und ein Poetry-Projekt erstellt, entweder von Grund auf oder innerhalb eines bestehenden Projekts. Sie haben auch Abhängigkeiten hinzugefügt und diese dann in einer virtuellen Umgebung installiert. Darüber hinaus haben Sie eine Abhängigkeit entfernt, bevor Sie sie als feste Abhängigkeit in Ihr Projekt aufgenommen haben. Als Nächstes können Sie weitere Funktionen von Poetry erkunden, mit diesem Tutorial zur Veröffentlichung von Python-Paketen auf PyPI mit Poetry unter Ubuntu 22.04.