Vorwort
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Dieses Buch ist ein Leitfaden für moderne Python-Entwicklerwerkzeuge - Programme, die dir helfen, Programmieraufgaben wie:
-
Python-Installationen auf deinem System verwalten
-
Installation von Drittanbieterpaketen für dein aktuelles Projekt
-
Erstellen eines Python-Pakets zur Verteilung auf einem Paket-Repository
-
Wiederholte Ausführung einer Testsuite in mehreren Umgebungen
-
Linting und Typprüfung deines Codes zum Auffinden von Fehlern
Du brauchst diese Werkzeuge nicht unbedingt, um Python-Software zu schreiben. Starte den Python-Interpreter deines Systems und rufe eine interaktive Eingabeaufforderung auf. Speichere deinen Python-Code als Skript für später. Warum solltest du etwas anderes als einen Editor und eine Shell benutzen?
Das ist keine rhetorische Frage. Jedes Tool, das du deinem Entwicklungsworkflow hinzufügst, sollte einen klaren Zweck haben und einen Nutzen bringen, der die Kosten für seinen Einsatz übersteigt. Im Allgemeinen werden die Vorteile von Entwicklungswerkzeugen deutlich, wenn du die Entwicklung im Laufe der Zeit nachhaltig gestalten musst. Irgendwann wird es einfacher sein, dein Modul im Python Package Index zu veröffentlichen, als es per E-Mail an deine Nutzer zu schicken.
Irgendwo auf dem Weg vom Schreiben einzelner Skripte bis zur Verteilung und Wartung von Paketen tauchen immer wieder Herausforderungen auf:
-
Unterstützung für mehrere Python-Versionen auf verschiedenen Betriebssystemen
-
Abhängigkeiten auf dem neuesten Stand halten und sie auf Schwachstellen überprüfen
-
Die Codebasis lesbar und konsistent halten
-
Interaktion mit Fehlerberichten und externen Beiträgen aus der Community
-
Die Testabdeckung hoch halten, um die Fehlerquote bei Codeänderungen zu reduzieren
-
Wiederkehrende Aufgaben automatisieren, um Reibungsverluste zu reduzieren und Überraschungen zu vermeiden
Dieses Buch zeigt dir, wie Entwicklerwerkzeuge bei solchen Herausforderungen helfen können. Die hier beschriebenen Werkzeuge kommen der Codequalität, Sicherheit und Wartbarkeit von Python-Projekten zugute.
Aber die Verwendung von Werkzeugen erhöht auch die Komplexität und den Overhead. Dieses Buch versucht, diesen Aufwand zu minimieren, indem es Werkzeuge zu einer einfach zu bedienenden Toolchain schmiedet und Workflows zuverlässig und wiederholbar automatisiert - egal, ob sie lokal auf einem Entwicklerrechner oder auf einem Continuous-Integration-Server über eine Reihe von Plattformen und Umgebungen hinweg ausgeführt werden. Du solltest dich so weit wie möglich auf das Schreiben von Software konzentrieren können, während deine Toolchain im Hintergrund arbeitet.
Faulheit wird als "die größte Tugend eines Programmierers" bezeichnet.1 und dieses Sprichwort gilt auch für Entwicklungswerkzeuge: Halte deinen Arbeitsablauf einfach und verwende Werkzeuge nicht um ihrer selbst willen. Gleichzeitig sind gute Programmierer/innen aber auch neugierig. Probiere die Werkzeuge in diesem Buch aus, um herauszufinden, welchen Wert sie für deine Projekte haben können.
Das Python-Ökosystem entwickelt sich ständig weiter: Was wir heute für modern halten, weicht unweigerlich den hypermodernen Wegen von morgen.2 Dieses Buch versucht, das Bewusstsein für die neuesten Tools, Standards und bewährten Methoden zu schärfen - nicht um des Neuen willen, sondern weil sie deine Produktivität und deine Erfahrung als Entwickler verbessern. Wenn du das Warum und Wie dieser Tools und Workflows verstehst - und auch ihre Nachteile -, bist du bereit, wenn die nächste Generation von Python-Tools am Horizont erscheint.
Wer sollte dieses Buch lesen?
Wenn du zu diesen Menschen gehörst, wirst du von der Lektüre dieses Buches profitieren:
-
Du kennst dich mit Python aus, aber du weißt nicht, wie du ein Paket erstellen kannst.
-
Du machst das schon seit Jahren - Setuptools, Virtualenv und Pip sind deine Freunde. Du bist neugierig auf die neuesten Entwicklungen bei den Werkzeugen und was sie dir bringen.
-
Du wartest geschäftskritischen Code, der in der Produktion läuft. Aber es muss doch einen besseren Weg geben, all das zu tun. Du möchtest die neuesten Tools und bewährten Methoden kennenlernen.
-
Du willst als Python-Entwickler produktiver sein.
-
Du bist ein Open-Source-Maintainer, der nach einer robusten und modernen Projektinfrastruktur sucht.
-
Du verwendest eine Reihe von Python-Tools in deinen Projekten, aber es ist schwer zu erkennen, wie alles zusammenpasst. Du möchtest die Reibungsverluste, die mit all diesen Werkzeugen einhergehen, verringern.
-
"Warum findet Python mein Modul nicht mehr? Warum kann ich das Paket, das ich gerade installiert habe, nicht importieren?"
In diesem Buch wird davon ausgegangen, dass du Grundkenntnisse in der Programmiersprache Python hast. Die einzigen Werkzeuge, mit denen du vertraut sein musst, sind der Python-Interpreter, ein Editor oder eine IDE und die Kommandozeile deines Betriebssystems.
Wie dieses Buch organisiert ist
Dieses Buch ist in drei Teile gegliedert:
- Teil I, "Arbeiten mit Python"
-
-
In Kapitel 1, "Python installieren", lernst du, wie du Python-Installationen über verschiedene Plattformen hinweg verwalten kannst. In diesem Kapitel werden auch die Python-Launcher für Windows und Unix vorgestellt - du wirst sie im Laufe des Buches immer wieder verwenden.
-
In Kapitel 2, "Python-Umgebungen", erfährst du mehr über eine Python-Installation und wie dein Code mit ihr interagiert. Außerdem lernst du Werkzeuge kennen, mit denen du effizient mit virtuellen Umgebungen arbeiten kannst.
-
- Teil II, "Python-Projekte"
-
-
In Kapitel 3, "Python-Pakete", lernst du, wie du dein Projekt als Python-Paket einrichtest und wie du Paket-Artefakte erstellst und veröffentlichst. In diesem Kapitel wird auch die Beispielanwendung vorgestellt, die im gesamten Buch verwendet wird.
-
Kapitel 4, "Abhängigkeitsmanagement", beschreibt, wie du einem Python-Projekt Pakete von Drittanbietern hinzufügst und wie du die Abhängigkeiten deines Projekts im Laufe der Zeit im Auge behältst.
-
In Kapitel 5, "Projektemit Poetryverwalten", lernst du, wie du mit Python-Projekten mit Poetry arbeiten kannst. Mit Poetry kannst du Umgebungen, Abhängigkeiten und Pakete auf einer höheren Ebene verwalten.
-
- Teil III, "Prüfung und statische Analyse"
-
-
In Kapitel 6, "Testen mit pytest", wird erläutert, wie man ein Python-Projekt testet und wie man effizient mit dem pytest-Framework und seinem Ökosystem arbeitet.
-
In Kapitel 7, "Coverage messenmit Coverage.py", lernst du, wie du ungetesteten Code entdecken kannst, indem du die Codeabdeckung deiner Testsuite misst.
-
In Kapitel 8, "Automatisierung mit Nox", wird das Nox-Automatisierungsframework vorgestellt. Du wirst es verwenden, um Tests in verschiedenen Python-Umgebungen auszuführen und ganz allgemein, um Prüfungen und andere Entwicklungsaufgaben in deinen Projekten zu automatisieren.
-
Kapitel 9, "Linting mit Ruffund pre-commit", zeigt dir, wie du mit Ruff mögliche Fehler findest und behebst und wie du deinen Code formatierst. Außerdem lernst du pre-commit kennen, ein sprachenübergreifendes Linting-Framework mit Git-Integration.
-
In Kapitel 10, "Verwendung von Typen für Sicherheitund Inspektion", lernst du, wie du die Sicherheit von Typen mit statischen und Laufzeit-Typenprüfern verifizierst und wie du Typen zur Laufzeit inspizierst, um tatsächliche Magie auszuführen (es gelten die allgemeinen Geschäftsbedingungen).
-
Referenzen und weiterführende Literatur
Dein erster Bezugspunkt außerhalb dieses Buches sollte die offizielle Dokumentation der einzelnen Tools sein. Außerdem finden viele interessante Diskussionen über das Thema Paketierung auf dem Python-Diskurs statt. Die Diskussionen in der Kategorie Paketierung bestimmen oft die Zukunft des Python-Paketierungs- und Tooling-Ökosystems in Form von Paketierungsstandards im Rahmen des Python Enhancement Proposal (PEP)-Prozesses. Die Python Packaging Authority (PyPA) schließlich ist eine Arbeitsgruppe, die eine Reihe von Softwareprojekten für Python-Packaging verwaltet. Auf ihrer Website findet sich eine Liste der derzeit aktiven Interoperabilitätsstandards für Python-Pakete. Die PyPA veröffentlicht auch denPython Packaging User Guide.
In diesem Buch verwendete Konventionen
In diesem Buch werden die folgenden typografischen Konventionen verwendet:
- Kursiv
-
Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.
Constant width
-
Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.
Constant width bold
-
Zeigt Befehle oder anderen Text an, der vom Benutzer wortwörtlich eingetippt werden sollte.
Constant width italic
-
Zeigt Text an, der durch vom Benutzer eingegebene Werte oder durch kontextabhängige Werte ersetzt werden soll.
Tipp
Dieses Element steht für einen Tipp oder eine Anregung.
Hinweis
Dieses Element steht für einen allgemeinen Hinweis.
Warnung
Dieses Element weist auf eine Warnung oder einen Warnhinweis hin.
Code-Beispiele verwenden
Zusätzliches Material (Code-Beispiele, Übungen usw.) steht unter https://oreil.ly/hmpt-code zum Download bereit .
Wenn du eine technische Frage oder ein Problem mit den Codebeispielen hast, schreibe bitte eine E-Mail an bookquestions@oreilly.com.
Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Wenn in diesem Buch Beispielcode angeboten wird, darfst du ihn in deinen Programmen und deiner Dokumentation verwenden. Du musst uns nicht um Erlaubnis fragen, es sei denn, du reproduzierst einen großen Teil des Codes. Wenn du zum Beispiel ein Programm schreibst, das mehrere Teile des Codes aus diesem Buch verwendet, brauchst du keine Erlaubnis. Der Verkauf oder die Verbreitung von Beispielen aus O'Reilly-Büchern erfordert jedoch eine Genehmigung. Die Beantwortung einer Frage mit einem Zitat aus diesem Buch und einem Beispielcode erfordert keine Genehmigung. Wenn du einen großen Teil des Beispielcodes aus diesem Buch in die Dokumentation deines Produkts aufnimmst, ist eine Genehmigung erforderlich.
Wir freuen uns über eine Namensnennung, verlangen sie aber in der Regel nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Ein Beispiel: "Hypermodern Python Tooling von Claudio Jolowicz (O'Reilly). Copyright 2024 Claudio Jolowicz, 978-1-098-13958-2."
Wenn du der Meinung bist, dass die Verwendung von Code-Beispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter permissions@oreilly.com kontaktieren .
O'Reilly Online Learning
Hinweis
Seit mehr als 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.
Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer umfangreichen Text- und Videosammlung von O'Reilly und über 200 anderen Verlagen. Weitere Informationen erhältst du unter https://oreilly.com.
Wie du uns kontaktierst
Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:
- O'Reilly Media, Inc.
- 1005 Gravenstein Highway Nord
- Sebastopol, CA 95472
- 800-889-8969 (in den Vereinigten Staaten oder Kanada)
- 707-827-7019 (international oder lokal)
- 707-829-0104 (Fax)
- support@oreilly.com
- https://oreilly.com/about/contact.html
Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter https://oreil.ly/hypermodern-python-tooling aufrufen .
Neuigkeiten und Informationen über unsere Bücher und Kurse findest du unter https://oreilly.com.
Finde uns auf LinkedIn: https://linkedin.com/company/oreilly-media
Schau uns auf YouTube: https://youtube.com/oreillymedia
Danksagungen
Dieses Buch behandelt viele Open-Source-Python-Projekte. Ich bin ihren Autoren und Betreuern sehr dankbar, von denen die meisten in ihrer Freizeit und oft über viele Jahre hinweg an ihnen arbeiten. Insbesondere möchte ich die unbesungenen Helden der PyPA würdigen, die mit ihrer Arbeit an den Paketierungsstandards dafür sorgen, dass sich das Ökosystem zu besseren Werkzeugen entwickelt. Ein besonderer Dank geht an Thea Flowers, die Nox geschrieben und eine einladende Community aufgebaut hat.
Vor diesem Buch gab es die Artikelserie Hypermodern Python. Ich möchte mich bei Brian Okken, Michael Kennedy und Paul Everitt dafür bedanken, dass sie das Thema verbreitet haben, und bei Brian dafür, dass er mir den Mut gegeben hat, daraus ein Buch zu machen.
Für ihre tiefen Einblicke und ihr meinungsstarkes Feedback bin ich meinen Rezensenten Pat Viafore, Jürgen Gmach, Hynek Schlawack, William Jamir Silva, Ganesh Hark und Karandeep Johar zu Dank verpflichtet. Ohne sie wäre dieses Buch nicht dasselbe. Ich übernehme die Verantwortung für alle Fehler, die bleiben.
Um ein Buch zu machen, braucht man ein Dorf. Ich möchte mich bei meinen Redakteuren Zan McQuade, Brian Guerin, Sarah Grey, Greg Hyman und Emily Wydeven sowie beim gesamten Team von O'Reilly bedanken. Mein besonderer Dank geht an Sarah, die mich auf dem richtigen Weg gehalten und mein Schreiben während dieser Reise verbessert hat. Jakub Borys, meinem Manager bei Cloudflare, danke ich dafür, dass er mir Zeit für die Arbeit an diesem Buch gegeben hat. Danke, Gabriela Jolowicz, für die schönen und fesselnden Kapitelvignetten, die Zukunftsvisionen aus der Vergangenheit zeigen.
Dieses Buch ist Marianna gewidmet, der Liebe meines Lebens. Ohne ihre Unterstützung, Ermutigung und Inspiration hätte ich dieses Buch nicht schreiben können.
1 Larry Wall, Programming Perl (Sebastopol: O'Reilly, 1991).
2 Der Titel dieses Buches ist inspiriert von Die hypermoderne Schachpartie, geschrieben von Savielly Tartakower im Jahr 1924. Es gibt einen Überblick über die Revolution, die zu seiner Zeit in der Schachtheorie stattfand.
Get Hypermodern Python Tooling now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.