Python Packaging
Eine 'kontroverse' Meinung
Die Verwendung von setup.py zum Packen und Verteilen Ihrer Python-Pakete kann gelegentlich recht herausfordernd sein. Moderne Tools wie Poetry und UV machen nicht nur das Packaging viel einfacher, sondern helfen Ihnen auch, Ihre Abhängigkeiten auf sehr bequeme Weise zu verwalten. UV ist besonders bemerkenswert, da es 10-100x schneller ist als herkömmliche Tools.
Wenn Sie mehr Informationen über Poetry wünschen, können Sie die folgenden Artikel lesen:
- Python-Projekte mit Poetry und VSCode. Teil 1
- Python-Projekte mit Poetry und VSCode. Teil 2
- Python-Projekte mit Poetry und VSCode. Teil 3
Für eine umfassende Anleitung zu UV, dem blitzschnellen Python-Paketmanager, lesen Sie: UV: Der blitzschnelle Python-Paketmanager.
Introduction
Python Packaging ist der Prozess der Vorbereitung Ihres Python-Projekts für die Verteilung und Installation. Es gibt zwei Hauptansätze: die traditionelle setup.py-Methode und den modernen pyproject.toml-Ansatz (definiert in PEP-517, PEP-518 und PEP-660).
Für eine umfassende Anleitung zur Handhabung von Datei- und Verzeichnispfaden, was für die Verwaltung von Projektstrukturen unerlässlich ist, siehe die Seite File and directory Paths.
Traditional Approach: setup.py
Die Datei setup.py steht im Mittelpunkt eines traditionellen Python-Projekts. Sie beschreibt alle Metadaten über Ihr Projekt. Es gibt einige Felder, die Sie einem Projekt hinzufügen können, um ihm einen reichen Satz an Metadaten zu geben, die das Projekt beschreiben. Es gibt jedoch nur drei erforderliche Felder: name, version und packages. Das Feld name muss eindeutig sein, wenn Sie Ihr Paket im Python Package Index (PyPI) veröffentlichen möchten. Das Feld version verfolgt verschiedene Versionen des Projekts. Das Feld packages beschreibt, wo Sie den Python-Quellcode innerhalb Ihres Projekts abgelegt haben.
Dies ermöglicht es Ihnen, Python-Pakete einfach zu installieren. Oft reicht es aus zu schreiben:
python setup.py install
und das Modul installiert sich selbst.
Example: setup.py
Unser anfängliches setup.py wird auch Informationen über die Lizenz enthalten und die Datei README.txt für das Feld long_description wiederverwenden. Dies sieht dann so aus:
# setup.py: define package metadata for distribution
from distutils.core import setup
setup(
name='pythonCheatsheet', # Package name (must be unique on PyPI)
version='0.1', # Version number
packages=['pipenv',], # List of packages to include
license='MIT', # License type
long_description=open('README.txt').read(), # Read description from file
)
Melden Sie sich an, um dieses Quiz zu beantworten und Ihren Lernfortschritt zu verfolgen
setup.py file?Modern Approach: pyproject.toml
Die Datei pyproject.toml ist der moderne Standard für die Python-Projektkonfiguration (PEP-517, PEP-518, PEP-660). Sie bietet eine einheitliche Möglichkeit, die Anforderungen des Build-Systems und die Projektmetadaten in einem einzigen, deklarativen Dateiformat anzugeben.
Benefits of pyproject.toml
- Declarative: Alle Projektmetadaten an einem Ort
- Build system agnostic: Funktioniert mit setuptools, poetry, flit und anderen Build-Backends
- No code execution: Sicherer und vorhersehbarer als setup.py
- Standardized: Folgt PEP-Standards für bessere Tool-Unterstützung
Example: pyproject.toml
Hier ist ein einfaches pyproject.toml-Beispiel mit setuptools:
[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "pythonCheatsheet"
version = "0.1"
description = "A Python cheatsheet package"
readme = "README.txt"
requires-python = ">=3.8"
license = {text = "MIT"}
authors = [
{name = "Your Name", email = "your.email@example.com"}
]
classifiers = [
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
]
[project.optional-dependencies]
dev = [
"pytest>=7.0",
"black>=22.0",
]
Installing from pyproject.toml
Mit pyproject.toml können Sie Ihr Paket mit pip installieren:
pip install .
Oder im editierbaren Modus:
pip install -e .
Melden Sie sich an, um dieses Quiz zu beantworten und Ihren Lernfortschritt zu verfolgen
pyproject.toml over setup.py?Choosing the Right Approach
- Use
setup.py: If you’re working with legacy projects or need fine-grained control - Use
pyproject.toml: For new projects (recommended), as it’s the modern standard and provides better tooling support
Find more information visit the official documentation.