Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter Entwicklung Zuletzt aktualisiert: September 24, 2023
Weitergeben:
Invicti Web Application Security Scanner - die einzige Lösung, die eine automatische Überprüfung von Schwachstellen mit Proof-Based Scanning™ ermöglicht.

Die gemeinsame Nutzung von Code und die Zusammenarbeit bei Open-Source-Software hat die Softwareentwicklung grundlegend verändert. Sie hat es Entwicklern ermöglicht, mit kleineren Teams kompliziertere Anwendungen unter Verwendung vorhandener Pakete und Bibliotheken zu erstellen.

Im Python-Ökosystem sind die meisten Pakete im Python Package Index (PyPI) registriert. Über den Index können Entwickler ihren Code als Pakete für andere Entwickler freigeben. Um Ihr eigenes Paket zu erstellen und es in PyPI hochzuladen, benötigen Sie eine pyproject.toml Datei. Dieser Artikel ist eine Anleitung, wie das funktioniert.

Was ist pyproject.toml?

Bevor wir uns damit befassen, was diese Datei ist, sollten wir zunächst die Lücke verstehen, die sie zu füllen versucht. Wenn Sie ein Paket auf PyPI hochladen, wird es mit pip installierbar. Wenn Ihr Paket nach dem Hochladen zu PyPI beispielsweise example-package heißt, kann es mit dem folgenden Befehl installiert werden:

pip install example-package

Wenn Sie Pakete im Python Package Index veröffentlichen, laden Sie eine .whl-Datei hoch. Aber wenn Sie Code schreiben, schreiben Sie meistens .py-Dateien. Wie erzeugen Sie also eine .whl-Datei? Sie verwenden ein Build-Tool wie setuptools oder poetry.

Dieses Tool wandelt Ihren Quellcode in eine .whl-Datei um, die Sie hochladen können. Wie bereits erwähnt, gibt es mehrere Tools, die Sie zur Erstellung einer Whl-Datei verwenden können. Um anzugeben, welches Tool Python verwenden soll, schreiben Sie es in die Datei pyproject.toml.

Die Datei pyproject.toml ist also eine Datei, die angibt, wie Ihr Python-Projekt in ein Paket eingebaut werden soll. Darüber hinaus können Sie zusätzliche Informationen angeben, wie z.B. die Metadaten Ihres Pakets, die dann in der Auflistung Ihres Pakets bei PyPI angezeigt werden.

Der Python-Erstellungsprozess

Um das Tool für den Build-Prozess zu starten, verwenden Sie den Befehl,

python -m build

Aber bevor Sie das tun können, müssen Sie es installieren

python -m pip install build

Wenn Sie den Build-Befehl in einem Projekt ausführen, das eine pyproject.toml-Datei enthält, werden neue Dateien und Verzeichnisse angelegt. Dazu gehört der Ordner dist, der zwei Dateien enthält, eine komprimierte Archivdatei namens sdist und eine .whl-Datei, die Sie dann über PyPI verteilen.

Wie generiert man ein Python-Paket?

Damit Sie das soeben Gelernte besser verinnerlichen können, finden Sie hier ein Beispiel für die Erstellung eines Python-Pakets.

#1. Erstellen Sie ein Beispielprojekt

Erstellen Sie zunächst ein einfaches Paket mit der folgenden Ordnerstruktur

example_package/
├─ example_package/
│ ├─ example_module.py
│ ├─ __init__.py
├─ pyproject.toml
├─ setup.cfg
├─ README.md

Das Stammverzeichnis des Projekts heißt example_package. Darin befindet sich unsere gesamte Codebasis. Im Stammverzeichnis des Projekts befinden sich drei Dateien und ein Verzeichnis. Ihr Inhalt wird im Folgenden erklärt:

pyproject.toml

Diese Datei enthält Informationen darüber, welche Build-Tools bei der Erstellung Ihres Projekts verwendet werden sollen. Für dieses einfache Beispiel sind dies die Inhalte:

[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"

In diesem Fall deklarieren wir setuptools.build_meta als unser Build-Backend. Da setuptools.build_meta jedoch im Paket setuptools enthalten ist, führen wir es zunächst als Anforderung in unserer Liste der Anforderungen auf. Weitere Optionen, die Sie angeben können, werden wir später in diesem Artikel besprechen.

README.md

Enthält Informationen über Ihr Paket. Diese Datei wird als Dokumentation auf der Seite Ihres Pakets auf PyPI angezeigt. Sie können alles in diese Datei schreiben.

setup.cfg

Die Datei setup.cfg enthält Projekt-Metadaten, wie den Namen des Pakets und die aktuelle Version. Fügen Sie zunächst den folgenden Code als Inhalt von setup.cfg hinzu:

<x>[metadata]</x>
name = example-package
version = 1.0.0

beispiel-projekt

In unserem Stammverzeichnis befindet sich ein weiteres Verzeichnis mit demselben Namen. In diesem Verzeichnis befindet sich unser Quellcode. Zu Demonstrationszwecken habe ich zwei Dateien hinzugefügt:

  • example_module.py – Diese Datei enthält eine Dummy-Funktion. Sie können das Gleiche auch tun.
  • __init__.py – Damit wird das Verzeichnis zu einem Paket, das importiert werden kann. Es kann leer sein.

#2. Führen Sie den Build-Befehl aus

Jetzt können Sie den Build-Befehl im Stammverzeichnis des Projekts ausführen.

python -m build

Wenn Sie das noch nicht getan haben, installieren Sie das Tool wie folgt:

pip install build

Sie sollten eine Ausgabe erhalten, die wie folgt aussieht:

Screenshot-from-2023-06-01-01-05-54-1

Wie Sie sehen können, sagt Ihnen die letzte Zeile, dass example-package-1.0.0.tar.gz und example-package-1.0.0-py3-none-any-whl gebaut wurden. Wenn Sie den Inhalt Ihres Verzeichnisses mit dem Befehl ls unten auflisten, sollten Sie neue Dateien sehen.

ls

Die Ausgabe sollte wie folgt aussehen:

dist example_package example_package.egg-info pyproject.toml README.md setup.cfg
Screenshot-from-2023-06-01-01-27-15

Wenn Sie den Inhalt Ihres dist-Verzeichnisses auflisten, sollten Sie die .whl-Datei und die tar.gz-Datei finden.

$ ls dist
example_package-1.0.0-py3-none-any.whl
example-package-1.0.0.tar.gz
Screenshot-from-2023-06-01-01-29-24

Inhalt der Datei pyproject.toml

In unserem einfachen Beispiel haben wir nur das Build-System unseres Python-Projekts angegeben. Sie können Ihrer pyproject.toml Datei jedoch weitere Informationen hinzufügen. Dies sind einige der üblichen Optionen.

metadaten

Anstatt die Metadaten in der setup.cfg anzugeben, können Sie sie in Ihre pyproject.toml schreiben. Diese Informationen werden bei der Erstellung eines Eintrags für Ihr Paket im Paketindex verwendet.

Darüber hinaus können Sie die Abhängigkeiten Ihres Pakets und deren Versionen angeben, damit diese bei der Installation Ihres Pakets installiert werden können.

[Projekt]
name = "hello-world"
version = "1.0.0"
description = "Mein erstes Python-Paket"
requires-python = ">=3.8"
keywords = ["python", "first-project"]
authors = [
 {name = "John Doe", email = "john@example.com"},
]
dependencies = [
 "requests",
 "gidgethub[httpx]>4.0.0",
]

tool.<tool_name&gt

Sie können auch tool.<tool_name> verwenden, wobei <tool_name> der Name des Tools ist, um verschiedene Konfigurationsoptionen für die von Ihnen verwendeten Tools bereitzustellen.

Dies ist nur bei Tools möglich, die die Konfiguration mit dieser Methode unterstützen. So können Sie zum Beispiel Konfigurationsoptionen an Black, einen Code-Linter, übergeben.

[tool.black]
line-length = 88
target-version = ["py38", "py39"]

Beispiel-Datei

Um das Gelernte zusammenzufassen, hier ein Beispiel für eine pyproject.toml-Datei:

[build-system]
requires = ["setuptools>=42", "wheel"]
build-backend = "setuptools.build_meta"

<x>[metadata]</x>
name = "my-project"
version = "1.0.0"
description = "Ein Beispielprojekt"
author = "Ihr Name"
author_email = "your.email@example.com"
license = "MIT"
keywords = ["sample", "project"]

[options]
python_requires = ">=3.6"

[tool.black]
line-length = 88
include = "\\.pyi?$"
exclude = '''
/(
 \.git
 | \.hg
 | \.mypy_cache
 | \.tox
 | \.venv
 | _build
 | buck-out
 | build
 | dist
)/
'''

[tool.blackd]
port = 45484
host = "localhost"

Für weitere Informationen lesen Sie bitte diese Seite.

Vorteile von pyproject.toml

✅ Es bietet eine Standardmethode zur Verwaltung von Abhängigkeiten für Python-Projekte. Die Abhängigkeiten
und andere relevante Metadaten von Projekten können auf deklarative Weise angegeben werden.

✅ Es bietet auch eine Möglichkeit, andere Metadaten in Ihren Projekten anzugeben, wie z.B. die Autoren, die Lizenz und die GitHub-URL, neben anderen hilfreichen Attributen.

✅ Es passt zu verschiedenen Build-Systemen und der Wechsel zwischen Build-Systemen ist einfach.

Letzte Worte

pyproject.toml ist ein nützlicher Standard, der hilft, die Nachteile der Verwendung von setup.py zu vermeiden. Er ist besonders nützlich, wenn Sie Pakete für die Verteilung erstellen. Für die meisten neuen Projekte sollten Sie pyproject.toml anstelle von setup.py verwenden.

Als nächstes erfahren Sie, wie Sie die Python-Version in Windows, Linux und macOS überprüfen können.

  • Anesu Kafesu
    Autor
    Full-Stack-Webentwickler und technischer Redakteur. Lernt derzeit KI.
Dank an unsere Sponsoren
Weitere gute Lektüre zum Thema Entwicklung
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti nutzt das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu überprüfen und innerhalb weniger Stunden verwertbare Ergebnisse zu erzielen.
    Versuchen Sie Invicti
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder