| title | Python-Paketierung - Python Spickzettel |
|---|---|
| description | Erfahren Sie, wie Sie Python-Projekte mit setup.py und pyproject.toml paketieren. Verstehen Sie den modernen Ansatz der Python-Paketierung mit den Spezifikationen PEP-517, PEP-518 und PEP-660. |
| labUrl | https://labex.io/de/labs/python-python-setup-py-633666?course=python-cheatsheet |
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.
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.
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 installund das Modul installiert sich selbst.
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
)setup.py file?
A. name, author, license
B. name, description, packages
C. name, version, packages
D. name, version, license
The three required fields in setup.py are name (package name, must be unique on PyPI), version (tracks releases), and packages (describes where Python source code is located).
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.
- 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
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",
]Mit pyproject.toml können Sie Ihr Paket mit pip installieren:
pip install .Oder im editierbaren Modus:
pip install -e .pyproject.toml over setup.py?
A. It's faster to execute
B. It's declarative, safer (no code execution), and follows PEP standards
C. It requires less configuration
D. It only works with Python 3.10+
The pyproject.toml approach is declarative (all metadata in one place), safer because it doesn't execute code like setup.py does, and follows PEP standards (PEP-517, PEP-518, PEP-660) for better tooling support.
- 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.
- Virtual Environments
- File and directory Paths
- UV: The Lightning-Fast Python Package Manager
- Python projects with Poetry and VSCode. Part 1
- Python projects with Poetry and VSCode. Part 2
- Python projects with Poetry and VSCode. Part 3
- import()