Projektstruktur und pyproject.toml
Ein Paket strukturieren
Projektstruktur und pyproject.toml ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.
Warum Sie Ihren Code paketieren sollten
Ein Skript befindet sich auf Ihrem Rechner; ein Paket kann von jedem mit pip install installiert werden. Durch das Paketieren wird ein Codeordner zu einer verteilbaren, versionierten und wiederverwendbaren Einheit.
Der erste Schritt ist ein sauberer Projektaufbau und eine Konfigurationsdatei.
Das src-Layout
Die empfohlene Struktur legt Ihren importierbaren Code in einem Verzeichnis src/ ab:
src/mypackage/__init__.pysrc/mypackage/core.pypyproject.tomlREADME.mdundtests/
Das src-Layout verhindert, dass Sie Ihren Code versehentlich aus dem Projektstamm statt aus der installierten Kopie importieren.
Die Datei __init__.py
__init__.py kennzeichnet ein Verzeichnis als importierbares Paket und wird ausgeführt, wenn das Paket erstmals importiert wird. Dort legen Sie außerdem die öffentliche API fest, indem Sie wichtige Namen importieren.
Schon eine leere __init__.py reicht aus, um ein Paket zu erstellen.
package_dir = 'src/mypackage'
files = ['__init__.py', 'core.py', 'utils.py']
for f in files:
print(package_dir + '/' + f)
print('Importable as:', 'mypackage')Was pyproject.toml ist
pyproject.toml ist die einzige standardisierte Konfigurationsdatei (PEP 518/621) für modernes Python-Paketieren. Sie ersetzt bei den meisten Projekten das alte setup.py und wird von Build-Tools eingelesen.
Sie verwendet das TOML-Format: Abschnitte stehen in eckigen Klammern, gefolgt von Zeilen der Form key = value.
Die build-system-Tabelle
Die Tabelle [build-system] teilt den Tools mit, wie Ihr Paket gebaut werden soll. Eine gängige Wahl ist:
requires = ['setuptools', 'wheel']build-backend = 'setuptools.build_meta'
Weitere Backends sind Hatchling und Flit; das Prinzip ist dasselbe.
Die project-Tabelle
Die Tabelle [project] enthält Metadaten: name, version, description, authors, readme, requires-python und dependencies. Diese Angaben sehen Benutzer auf PyPI.
Betrachten Sie sie als den Identitätsnachweis Ihres Pakets.
project = {
'name': 'mytool',
'version': '0.1.0',
'requires-python': '>=3.9',
'dependencies': ['requests>=2.0'],
}
for k, v in project.items():
print(k, '=', v)Namensregeln
Der Paketname muss auf PyPI eindeutig sein und folgt einer Normalisierung: Groß- und Kleinschreibung wird ignoriert, Bindestriche und Unterstriche werden gleich behandelt. Prüfen Sie die Verfügbarkeit, bevor Sie sich auf einen Namen festlegen, damit es beim Hochladen nicht zu einem Konflikt kommt.
name = 'My_Cool.Tool'
normalized = name.lower().replace('_', '-').replace('.', '-')
print('PyPI normalized name:', normalized)Abhängigkeiten deklarieren
Listen Sie Laufzeitabhängigkeiten unter dependencies mit Versionsbedingungen wie 'requests>=2.28,<3' auf. Optionale Extras gehören unter [project.optional-dependencies] und können über pip install mytool[dev] installiert werden.
Halten Sie die Bedingungen so wenig restriktiv wie sicher möglich, damit Ihr Paket mit anderen zusammenarbeiten kann.
Entry Points
Um ein Befehlszeilen-Tool bereitzustellen, fügen Sie einen Eintrag unter [project.scripts] hinzu, etwa mytool = 'mypackage.cli:main'. Nach der Installation führt die Eingabe von mytool diese Funktion aus. Auf diese Weise stellen CLIs wie black oder pytest ihre Befehle bereit.
Nicht-Code-Dateien einbinden
Datendateien (Templates, JSON) werden nicht automatisch eingebunden. Konfigurieren Sie die Paketdaten in Ihrem Build-Backend, damit die Dateien in der Wheel-Datei enthalten sind. Wenn dies vergessen wird, ist das eine häufige Ursache für Fehler nach dem Muster „lokal funktioniert es, nach der Installation nicht“.
Editierbare Installationen für die Entwicklung
Installieren Sie Ihr Paket während der Entwicklung im editierbaren Modus mit pip install -e .. Änderungen am Quellcode werden sofort wirksam, ohne dass Sie das Paket neu installieren müssen. Dies setzt eine korrekte pyproject.toml voraus und ist ein weiterer Grund, sie frühzeitig einzurichten.
Editierbare Installationen ermöglichen beim Weiterentwickeln eines Pakets die schnellste Rückkopplung.
Kurzer Check
Testen Sie Ihr Wissen über den Projektaufbau.
Zusammenfassung
Sie haben den Aufbau eines Pakets festgelegt:
- Verwenden Sie das src-Layout, wobei
__init__.pyPakete kennzeichnet pyproject.tomlist die Standardkonfiguration mit[build-system]und[project]- Deklarieren Sie
name,version,requires-pythonunddependencies - Fügen Sie unter
[project.scripts]Entry Points für CLIs hinzu und konfigurieren Sie die Paketdaten
Häufig gestellte Fragen
Ist die Lektion „Projektstruktur und pyproject.toml“ kostenlos?
Ja — der vollständige Text von „Projektstruktur und pyproject.toml“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Projektstruktur und pyproject.toml“?
Ein Paket strukturieren Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Python Academy zu starten?
Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Projektstruktur und pyproject.toml“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?
Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Projektstruktur und pyproject.toml
- Mit build erstellen
- Versionierung und Metadaten
- Mit twine veröffentlichen