Kapitel 1. Einführung in Python

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Python ist eine etablierte Allzweckprogrammiersprache, die von ihrem Erfinder Guido van Rossum 1991 erstmals veröffentlicht wurde. Diese stabile und ausgereifte Sprache ist hochsprachlich, dynamisch, objektorientiert und plattformübergreifend - alles sehr attraktive Eigenschaften. Python läuft auf macOS, den meisten aktuellen Unix-Varianten einschließlich Linux, Windows und - mit einigen Anpassungen - auch auf mobilen Plattformen.1

Python bietet eine hohe Produktivität für alle Phasen des Software-Lebenszyklus: Analyse, Design, Prototyping, Kodierung, Testen, Debugging, Tuning, Dokumentation und natürlich die Wartung. Die Popularität der Sprache wächst seit vielen Jahren stetig und wurde im Oktober 2021 zum Spitzenreiter im TIOBE-Index. Heutzutage ist die Vertrautheit mit Python für jeden Programmierer ein Pluspunkt: Die Sprache hat sich in die meisten Nischen eingeschlichen und spielt in jeder Softwarelösung eine nützliche Rolle.

Python bietet eine einzigartige Mischung aus Eleganz, Einfachheit, Praktikabilität und schierer Leistung. Dank seiner Konsistenz und Regelmäßigkeit, seiner umfangreichen Standardbibliothek und der vielen Pakete und Tools von Drittanbietern, die für Python verfügbar sind, wirst du schnell produktiv werden. Python ist leicht zu erlernen und eignet sich daher sehr gut für Programmieranfänger, ist aber auch leistungsfähig genug für die anspruchsvollsten Experten.

Die Sprache Python

Die Sprache Python ist zwar nicht minimalistisch, aber aus guten pragmatischen Gründen sparsam. Wenn eine Sprache erst einmal eine gute Möglichkeit bietet, ein Design auszudrücken, hat das Hinzufügen weiterer Möglichkeiten bestenfalls bescheidene Vorteile; die Kosten für die Komplexität der Sprache wachsen jedoch mehr als linear mit der Anzahl der Funktionen. Eine komplizierte Sprache ist schwieriger zu erlernen und zu beherrschen (und effizient und fehlerfrei zu implementieren) als eine einfachere Sprache. Komplikationen und Macken in einer Sprache behindern die Produktivität bei der Softwareentwicklung, vor allem in großen Projekten, in denen viele Entwickler/innen zusammenarbeiten und oft auch Code pflegen, der ursprünglich von anderen geschrieben wurde.

Python ist ziemlich einfach, aber nicht simpel. Es folgt der Idee, dass eine Sprache, die sich in bestimmten Kontexten auf eine bestimmte Weise verhält, idealerweise in allen Kontexten ähnlich funktionieren sollte. Python folgt dem Grundsatz, dass eine Sprache keine "bequemen" Abkürzungen, Sonderfälle, Ad-hoc-Ausnahmen, übermäßig subtile Unterscheidungen oder mysteriöse und trickreiche Optimierungen im Verborgenen haben sollte. Eine gute Sprache muss, wie jedes andere gut gestaltete Artefakt, allgemeine Prinzipien mit Geschmack, gesundem Menschenverstand und einer Menge Praktikabilität ausgleichen.

Python ist eine universell einsetzbare Programmiersprache: Ihre Eigenschaften sind in fast allen Bereichen der Softwareentwicklung nützlich. Es gibt keinen Bereich, in dem Python nicht Teil einer Lösung sein kann. "Teil" ist hier wichtig; auch wenn viele Entwickler/innen finden, dass Python alle ihre Bedürfnisse erfüllt, muss es nicht allein stehen. Python-Programme können mit einer Vielzahl anderer Software-Komponenten zusammenarbeiten und sind damit die richtige Sprache, um Komponenten anderer Sprachen miteinander zu verbinden. Ein Designziel der Sprache ist und war es schon immer, "gut mit anderen zu spielen".

Python ist eine Very High-Level Language (VHLL). Das bedeutet, dass sie eine höhere Abstraktionsebene verwendet und konzeptionell weiter von der zugrunde liegenden Maschine entfernt ist als klassische kompilierte Sprachen wie C, C++ und Rust, die traditionell als "Hochsprachen" bezeichnet werden. Python ist einfacher, schneller zu verarbeiten (sowohl für Menschen als auch für Werkzeuge) und regelmäßiger als klassische Hochsprachen. Das ermöglicht eine hohe Produktivität der Programmierer und macht Python zu einem starken Entwicklungswerkzeug. Gute Compiler für klassische kompilierte Sprachen können Binärcode erzeugen, der schneller läuft als Python. In den meisten Fällen ist die Leistung von in Python programmierten Anwendungen jedoch ausreichend. Wenn das nicht der Fall ist, kannst du die in "Optimierung" beschriebenen Optimierungstechniken anwenden, um die Leistung deines Programms zu verbessern und gleichzeitig den Vorteil der hohen Produktivität zu erhalten.

Was das Sprachniveau angeht, ist Python mit anderen leistungsstarken VHLLs wie JavaScript, Ruby und Perl vergleichbar. Die Vorteile der Einfachheit und Regelmäßigkeit bleiben jedoch auf der Seite von Python.

Python ist eine objektorientierte Programmiersprache, mit der du aber sowohl objektorientiert als auch prozedural programmieren kannst, mit einem Hauch von funktionaler Programmierung, je nachdem, was deine Anwendung erfordert. Die objektorientierten Funktionen von Python ähneln konzeptionell denen von C++, sind aber einfacher zu benutzen.

Die Python-Standardbibliothek und Erweiterungsmodule

ist mehr als nur die Sprache Python: Die Standardbibliothek und andere Erweiterungsmodule sind für die Verwendung von Python fast genauso wichtig wie die Sprache selbst. Die Python-Standardbibliothek bietet viele gut durchdachte, solide Python-Module zur bequemen Wiederverwendung. Sie enthält Module für Aufgaben wie die Darstellung von Daten, die Verarbeitung von Text, die Interaktion mit dem Betriebssystem und dem Dateisystem sowie die Webprogrammierung und funktioniert auf allen von Python unterstützten Plattformen.

Mit Erweiterungsmodulen aus der Standardbibliothek oder anderen Quellen kann Python-Code auf Funktionen zugreifen, die vom zugrundeliegenden Betriebssystem oder anderen Softwarekomponenten wie grafischen Benutzeroberflächen (GUIs), Datenbanken und Netzwerken bereitgestellt werden. Erweiterungen ermöglichen außerdem eine hohe Geschwindigkeit bei rechenintensiven Aufgaben wie dem Parsen von XML und der Berechnung von numerischen Arrays. Erweiterungsmodule, die nicht in Python kodiert sind, sind jedoch nicht unbedingt so plattformübergreifend portabel wie reiner Python-Code.

Du kannst Erweiterungsmodule in niedrigeren Sprachen schreiben, um die Leistung für kleine, rechenintensive Teile zu optimieren, die du ursprünglich in Python prototypisiert hast. Du kannst auch Werkzeuge wie Cython, ctypes, und CFFI verwenden, um bestehende C/C++-Bibliotheken in Python-Erweiterungsmodule zu verpacken, wie in "Python ohne die C-API von Python erweitern" in Kapitel 25 ( online verfügbar) beschrieben. Du kannst Python auch in Anwendungen einbetten, die in anderen Sprachen kodiert sind, indem du die Anwendungsfunktionalität über anwendungsspezifische Python-Erweiterungsmodule für Python zugänglich machst.

Dieses Buch dokumentiert viele Module aus der Standardbibliothek und anderen Quellen für die client- und serverseitige Netzwerkprogrammierung, Datenbanken, die Verarbeitung von Text- und Binärdateien und die Interaktion mit Betriebssystemen.

Python-Implementierungen

Unter gibt es zum Zeitpunkt der Erstellung dieses Artikels zwei produktionsreife Implementierungen von Python (CPython und PyPy) und mehrere neuere, leistungsfähige Implementierungen, die sich noch in einem früheren Entwicklungsstadium befinden: wie Nuitka, RustPython, GraalVM Python und Pyston, auf die wir nicht weiter eingehen. Unter "Andere Entwicklungen, Implementierungen und Distributionen" erwähnen wir auch einige andere Implementierungen, die sich noch in einem früheren Stadium befinden.

In diesem Buch geht es vor allem um CPython, die am weitesten verbreitete Implementierung, die wir der Einfachheit halber oft einfach "Python" nennen. Die Unterscheidung zwischen einer Sprache und ihren Implementierungen ist jedoch wichtig!

CPython

Classic Python - auchbekannt als CPython ( ), oft auch nur Python genannt - ist die aktuellste, solideste und vollständigste Implementierung von Python in Produktionsqualität. Sie ist die "Referenzimplementierung" der Sprache. CPython besteht aus einem Bytecode-Compiler, einem Interpreter und einer Reihe von integrierten und optionalen Modulen, die alle in Standard-C codiert sind.

CPython kann auf jeder Plattform verwendet werden, deren C-Compiler dem ISO/IEC 9899:1990 Standard entspricht2 entspricht (d. h. auf allen modernen, gängigen Plattformen). In "Installation" erklären wir, wie du CPython herunterlädst und installierst. Mit Ausnahme einiger weniger Abschnitte, die ausdrücklich anders gekennzeichnet sind, bezieht sich dieses Buch ausschließlich auf CPython. Die aktuelle Version von CPython, die gerade veröffentlicht wurde, ist 3.11.

PyPy

PyPy ist eine schnelle und flexible Python-Implementierung, die in einer Untermenge von Python selbst kodiert ist und mit Hilfe fortschrittlicher Techniken wie Type Inferencing mehrere niedrigere Sprachen und virtuelle Maschinen ansteuern kann. Die größte Stärke von PyPy ist die Fähigkeit, während der Ausführung deines Python-Programms "just in time" nativen Maschinencode zu generieren; das hat erhebliche Vorteile bei der Ausführungsgeschwindigkeit. PyPy implementiert derzeit die Version 3.8 (3.9 ist in der Beta-Phase).

Die Wahl zwischen CPython, PyPy und anderen Implementierungen

Wenn deine Plattform, wie die meisten, in der Lage ist, CPython, PyPy und einige der anderen Python-Implementierungen, die wir erwähnt haben, auszuführen, wie wählst du dann zwischen ihnen? Entscheide dich nicht voreilig: Lade sie alle herunter und installiere sie. Sie koexistieren problemlos und sind alle kostenlos (einige bieten auch kommerzielle Versionen mit Zusatzleistungen wie technischem Support an, aber die jeweiligen kostenlosen Versionen sind auch in Ordnung). Wenn du sie alle auf deinem Entwicklungscomputer hast, kostet dich das nur etwas Downloadzeit und ein wenig Speicherplatz und du kannst sie direkt miteinander vergleichen. Abgesehen davon, hier ein paar allgemeine Tipps.

Wenn du eine benutzerdefinierte Version von Python oder eine hohe Leistung für langlaufende Programme brauchst, solltest du PyPy in Betracht ziehen (oder, wenn du mit noch nicht ganz produktionsreifen Versionen zurechtkommst, eine der anderen, die wir erwähnt haben).

Wenn du hauptsächlich in einer traditionellen Umgebung arbeitest, ist CPython eine hervorragende Wahl. Wenn du keine starke Präferenz für eine Alternative hast, solltest du mit der Standardimplementierung von CPython beginnen, da diese am meisten von Add-ons und Erweiterungen von Drittanbietern unterstützt wird und die aktuellste Version bietet.

Mit anderen Worten: Um zu experimentieren, zu lernen und Dinge auszuprobieren, solltest du CPython verwenden. Für die Entwicklung und den Einsatz hängt die beste Wahl von den Erweiterungsmodulen ab, die du verwenden möchtest, und davon, wie du deine Programme verteilen willst. CPython unterstützt per Definition alle Python-Erweiterungen; PyPy hingegen unterstützt die meisten Erweiterungen und ist bei langlaufenden Programmen dank der Just-in-Time-Kompilierung in Maschinencode oft schneller - überprüfe das, indem du deinen CPython-Code mit PyPy (und natürlich auch mit anderen Implementierungen) vergleichst.

CPython ist am ausgereiftesten: Es gibt es schon länger, während PyPy (und die anderen) neuer sind und sich in der Praxis weniger bewährt haben. Die Entwicklung der CPython-Versionen schreitet schneller voran als die der anderen Implementierungen.

PyPy, CPython und andere von uns erwähnte Implementierungen sind allesamt gute, originalgetreue Implementierungen von Python, die in Bezug auf Benutzerfreundlichkeit und Leistung recht nahe beieinander liegen. Es ist ratsam, sich mit den Stärken und Schwächen der einzelnen Implementierungen vertraut zu machen, um dann die optimale Lösung für die jeweilige Entwicklungsaufgabe zu finden.

Andere Entwicklungen, Implementierungen und Verteilungen

Python ist so populär geworden, dass sich mehrere Gruppen und Einzelpersonen für seine Entwicklung interessieren und Funktionen und Implementierungen bereitstellen, die nicht im Fokus des Kernentwicklungsteams stehen.

Heutzutage enthalten die meisten Unix-basierten Systeme Python - typischerweise Version 3.x für einen bestimmten Wert von x - als"System-Python". Um Python unter Windows oder macOS zu installieren, lädst du dir normalerweise ein Installationsprogramm herunter und führst es aus (siehe auch "macOS"). Wenn du ernsthaft Software in Python entwickeln willst, solltest du als Erstes dein auf dem System installiertes Python in Ruhe lassen! Abgesehen von allem anderen wird Python zunehmend von einigen Teilen des Betriebssystems selbst verwendet, so dass ein Eingriff in die Python-Installation zu Problemen führen könnte.

Selbst wenn dein System mit einem "System-Python" ausgestattet ist, solltest du eine oder mehrere Python-Implementierungen installieren, die du für deine Entwicklungsarbeit frei verwenden kannst, in der Gewissheit, dass nichts, was du tust, Auswirkungen auf das Betriebssystem hat. Wir empfehlen außerdem die Verwendung der virtuellen Umgebungen von (siehe "Python-Umgebungen"), um Projekte voneinander zu isolieren und ihnen die Möglichkeit zu geben, sich gegenseitig zu beeinflussen (z. B. wenn zwei deiner Projekte unterschiedliche Versionen desselben Drittanbieter-Moduls benötigen). Alternativ ist es möglich, mehrere Pythons lokal nebeneinander zu installieren.

Die Popularität von Python hat zur Gründung vieler aktiver Gemeinschaften geführt, und das Ökosystem der Sprache ist sehr aktiv. In den folgenden Abschnitten werden einige der interessantesten Entwicklungen vorgestellt: Wenn wir hier ein Projekt nicht aufführen, liegt das an Platz- und Zeitmangel und bedeutet nicht, dass wir es ablehnen!

Jython und IronPython

Jython, das Python auf einer JVM unterstützt, und IronPython, das Python auf .NET unterstützt, sind Open-Source-Projekte, die zwar Produktionsqualität für die von ihnen unterstützten Python-Versionen bieten, aber zum Zeitpunkt des Verfassens dieses Artikels anscheinend "ins Stocken" geraten sind, da die neuesten von ihnen unterstützten Versionen deutlich hinter denen von CPython zurückliegen. Jedes "festgefahrene" Open-Source-Projekt kann wieder zum Leben erweckt werden: Es braucht nur einen oder mehrere begeisterte, engagierte Entwickler, die sich der "Wiederbelebung" widmen. Als Alternative zu Jython für die JVM könntest du auch das bereits erwähnte GraalVM Python in Betracht ziehen.

Numba

Numba ist ein quelloffener Just-in-Time-Compiler (JIT), der eine Teilmenge von Python und NumPy übersetzt. Da er sich stark auf die Verarbeitung von Zahlen konzentriert, wird er in Kapitel 16 noch einmal erwähnt.

Pyjion

Pyjion ist ein Open-Source-Projekt, das ursprünglich von Microsoft ins Leben gerufen wurde und dessen Hauptziel es ist, CPython eine API zur Verwaltung von JIT-Compilern hinzuzufügen. Zu den weiteren Zielen gehören die Bereitstellung eines JIT-Compilers für Microsofts Open-Source-Umgebung CLR (die Teil von .NET ist) und ein Framework zur Entwicklung von JIT-Compilern. Pyjion ersetzt CPython nicht, sondern ist ein Modul, das du aus CPython importierst (es benötigt derzeit die Version 3.10) und mit dem du den Bytecode von CPython "just in time" in Maschinencode für verschiedene Umgebungen übersetzen kannst. Die Integration von Pyjion in CPython wird durch PEP 523 ermöglicht. Da für die Erstellung von Pyjion jedoch neben einem C-Compiler (der alles ist, was zum Erstellen von CPython benötigt wird) noch weitere Tools erforderlich sind, wird die Python Software Foundation (PSF) Pyjion wahrscheinlich nie in die von ihr vertriebenen CPython-Versionen einbinden.

IPython

IPython erweitert den interaktiven Interpreter von CPython, um ihn leistungsfähiger und komfortabler zu machen. Es ermöglicht eine abgekürzte Syntax für Funktionsaufrufe und erweiterbare Funktionen, die durch das Prozentzeichen(%) eingeführt werden. Außerdem bietet er Shell-Escapes, mit denen eine Python-Variable das Ergebnis eines Shell-Befehls erhalten kann. Du kannst ein Fragezeichen verwenden, um die Dokumentation eines Objekts abzufragen (oder zwei Fragezeichen für eine erweiterte Dokumentation); alle Standardfunktionen des interaktiven Python-Interpreters sind ebenfalls verfügbar.

IPython hat sich vor allem in der wissenschaftlichen und datenorientierten Welt durchgesetzt und sich langsam (durch die Entwicklung von IPython Notebook, das jetzt überarbeitet und in Jupyter Notebook umbenannt wurde und in "Jupyter" besprochen wird ) in eine interaktive Programmierumgebung verwandelt, die neben Codeschnipseln3 neben Codefragmenten auch Kommentare im Programmierstil (einschließlich mathematischer Notation) einbetten und die Ausgabe des ausgeführten Codes anzeigen kann, optional mit fortschrittlichen Grafiken, die von Subsystemen wie matplotlib und bokeh erzeugt werden. Ein Beispiel für eine in ein Jupyter-Notizbuch eingebettete matplotlib-Grafik ist in der unteren Hälfte von Abbildung 1-1 zu sehen. Jupyter/IPython ist eine der herausragenden Erfolgsgeschichten von Python.

An example Jupyter Notebook with embedded matplotlib graph
Abbildung 1-1. Ein Beispiel für ein Jupyter Notebook mit eingebettetem Matplotlib-Graph

MicroPython

Der anhaltende Trend zur Miniaturisierung hat Python in die Reichweite von Hobbyisten gebracht. Auf Einplatinencomputern wie dem Raspberry Pi und den Beagle-Boards kannst du Python in einer vollständigen Linux-Umgebung ausführen. Unterhalb dieses Niveaus gibt es eine Klasse von Geräten, die als Mikrocontrollerbekannt sind - programmierbareChips mit konfigurierbarer Hardware -, die den Spielraum für Hobby- und Profiprojekte erweitern, indem sie z. B. analoge und digitale Sensorik einfach machen und Anwendungen wie Licht- und Temperaturmessungen mit wenig zusätzlicher Hardware ermöglichen.

Sowohl Hobbyisten als auch professionelle Ingenieure machen zunehmend Gebrauch von diesen Geräten, die ständig auftauchen (und manchmal auch wieder verschwinden). Dank des MicroPython-Projekts können die umfangreichen Funktionen vieler solcher Geräte(micro:bit, Arduino, pyboard, LEGOⓇ MINDSTORMSⓇ EV3, HiFive usw.) jetzt in (begrenzten Dialekten von) Python programmiert werden. Zum Zeitpunkt der Erstellung dieses Artikels ist die Einführung des Raspberry Pi Pico von Bedeutung. Angesichts des Erfolgs des Raspberry Pi in der Bildungswelt und der Fähigkeit des Pico, MicroPython auszuführen, scheint es, dass Python seine Position als Programmiersprache mit dem breitesten Anwendungsspektrum festigt.

MicroPython ist eine Python-Implementierung der Version 3.4 ("mit ausgewählten Funktionen aus späteren Versionen", wie es in der Dokumentation heißt), die Bytecode oder ausführbaren Maschinencode erzeugt (viele Benutzer werden sich der letzteren Tatsache nicht bewusst sein). Es implementiert die Syntax von Python 3.4 vollständig, aber es fehlt ein Großteil der Standardbibliothek. Mit speziellen Hardwaretreibermodulen kannst du verschiedene Teile der eingebauten Hardware steuern; der Zugriff auf die Socket-Bibliothek von Python ermöglicht die Interaktion von Geräten mit Netzwerkdiensten. Externe Geräte und Timer-Ereignisse können Code auslösen. Dank MicroPython kann die Sprache Python im Internet der Dinge voll mitspielen.

Ein Gerät bietet in der Regel über einen seriellen USB-Anschluss oder über einen Browser mit dem WebREPL-Protokoll Zugriff auf den Interpreter (uns sind allerdings noch keine voll funktionsfähigen ssh-Implementierungen bekannt, daher solltest du darauf achten, diese Geräte mit einer Firewall zu schützen: Sie sollten nicht direkt über das Internet zugänglich sein, ohne entsprechende Vorsichtsmaßnahmen zu treffen). Du kannst die Bootstrap-Sequenz beim Einschalten des Geräts in Python programmieren, indem du eine boot.py-Datei im Speicher des Geräts anlegst, die beliebig komplexen MicroPython-Code ausführen kann.

Anaconda und Miniconda

Eine der erfolgreichsten Python-Distributionen4 der letzten Jahre ist Anaconda. Dieses Open-Source-Paket kommt mit einer großen Anzahl5 von vorkonfigurierten und getesteten Erweiterungsmodulen zusätzlich zur Standardbibliothek. In vielen Fällen wirst du feststellen, dass es alle notwendigen Abhängigkeiten für deine Arbeit enthält. Wenn deine Abhängigkeiten nicht unterstützt werden, kannst du die Module auch mit pip installieren. Auf Unix-basierten Systemen wird es ganz einfach in einem einzigen Verzeichnis installiert: Um es zu aktivieren, fügst du einfach das Unterverzeichnis Anaconda bin an den Anfang deines Shell-PATHs.

Anaconda basiert auf einer Paketierungstechnologie namens conda. Eine Schwesterimplementierung von, Miniconda, ermöglicht den Zugriff auf dieselben Erweiterungen, ist aber nicht vorinstalliert, sondern lädt sie bei Bedarf herunter, was es zu einer besseren Wahl für die Erstellung maßgeschneiderter Umgebungen macht. conda verwendet nicht die standardmäßigen virtuellen Umgebungen, enthält aber gleichwertige Funktionen, um die Abhängigkeiten für mehrere Projekte zu trennen.

pyenv: Einfache Unterstützung für mehrere Versionen

Die Grundlegende Aufgabe von pyenv ist es, den Zugriff auf so viele verschiedene Python-Versionen zu erleichtern, wie du brauchst. Dazu werden sogenannte Shim-Skripte für jede ausführbare Datei installiert, die dynamisch die benötigte Version berechnen, indem sie verschiedene Informationsquellen in der folgenden Reihenfolge abfragen:

  1. Die Umgebungsvariable PYENV_VERSION (falls gesetzt).

  2. Die Datei .pyenv_version im aktuellen Verzeichnis (falls vorhanden) - du kannst sie mit dem Befehl pyenv local setzen.

  3. Die erste .pyenv_version-Datei, die beim Erklimmen des Verzeichnisbaums gefunden wird (falls eine gefunden wird).

  4. Die Versionsdatei im pyenv-Installationsstammverzeichnis - du kannst sie mit dem Befehl pyenv global setzen.

pyenv installiert seine Python-Interpreter unter seinem Home-Verzeichnis (normalerweise ~/.pyenv). Sobald er verfügbar ist, kann ein bestimmter Interpreter als Standard-Python in jedem Projektverzeichnis installiert werden. Alternativ (z. B. beim Testen von Code unter mehreren Versionen) kannst du mit Hilfe von Skripten den Interpreter dynamisch ändern, während das Skript fortschreitet.

Der Befehl pyenv install -list zeigt eine beeindruckende Liste von über 500 unterstützten Distributionen an, darunter PyPy, Miniconda, MicroPython und einige andere, sowie jede offizielle CPython-Implementierung von 2.1.3 bis (zum Zeitpunkt der Erstellung dieses Artikels) 3.11.0rc1.

Transcrypt: Konvertiere dein Python in JavaScript

Es wurden viele Versuche unternommen, Python zu einer browserbasierten Sprache zu machen, aber JavaScript hat sich hartnäckig gehalten. Das Transcrypt-System ist ein per Pip installierbares Python-Paket, das Python-Code (derzeit bis Version 3.9) in browserausführbares JavaScript umwandelt. Du hast vollen Zugriff auf das DOM des Browsers, so dass dein Code den Fensterinhalt dynamisch manipulieren und JavaScript-Bibliotheken nutzen kann.

Transcrypt erstellt zwar verkleinerten Code, bietet aber vollständige Sourcecaps, die es dir ermöglichen, mit Bezug auf den Python-Quellcode und nicht auf das generierte JavaScript zu debuggen. Du kannst Browser-Event-Handler in Python schreiben und sie frei mit HTML und JavaScript mischen. Python wird vielleicht nie JavaScript als eingebettete Browsersprache ersetzen, aber mit Transcrypt brauchst du dir darüber keine Sorgen mehr zu machen.

Ein weiteres sehr aktives Projekt, mit dem du deine Webseiten mit Python (bis 3.10) programmieren kannst, ist Brython, und es gibt noch weitere: Skulpt, das noch nicht ganz Python 3 unterstützt, sich aber in diese Richtung bewegt; PyPy.js, dito; Pyodide, das derzeit Python 3.10 und viele wissenschaftliche Erweiterungen unterstützt und auf Wasm basiert; und seit kurzem PyScript von Anaconda, das auf Pyodide aufbaut. Wir beschreiben einige dieser Projekte ausführlicher in "Python im Browser ausführen".

Lizenzierung und Preisfragen

CPython unterliegt der Python Software Foundation License Version 2, die mit der GNU Public License (GPL) kompatibel ist, es dir aber erlaubt, Python für jede proprietäre, freie oder andere Open-Source-Softwareentwicklung zu verwenden, ähnlich wie die BSD/Apache/MIT-Lizenzen. Die Lizenzen für PyPy und andere Implementierungen sind ähnlich liberal. Alles, was du von den Hauptseiten von Python und PyPy herunterlädst, kostet dich keinen Cent. Außerdem schränken diese Lizenzen nicht ein, welche Lizenz- und Preisbedingungen du für Software verwenden kannst, die du mit den von ihnen abgedeckten Tools, Bibliotheken und Dokumentationen entwickelst.

Allerdings ist nicht alles, was mit Python zu tun hat, frei von Lizenzkosten oder Problemen. Viele Python-Quellen, -Werkzeuge und -Erweiterungsmodule von Drittanbietern, die du frei herunterladen kannst, haben liberale Lizenzen, ähnlich denen von Python selbst. Andere fallen unter die GPL oder Lesser GPL (LGPL), die die Lizenzbedingungen für abgeleitete Werke einschränken. Für einige kommerziell entwickelte Module und Tools musst du möglicherweise eine Gebühr zahlen, entweder ohne Bedingungen oder wenn du sie gewinnbringend einsetzt.6

Es gibt keinen Ersatz für eine sorgfältige Prüfung der Lizenzbedingungen und Preise. Bevor du Zeit und Energie in ein Softwaretool oder eine Komponente investierst, prüfe, ob du mit der Lizenz leben kannst. Vor allem in Unternehmen kann es vorkommen, dass du für solche rechtlichen Fragen einen Anwalt hinzuziehen musst. Die in diesem Buch behandelten Module und Werkzeuge sind, sofern wir nicht ausdrücklich etwas anderes sagen, zum Zeitpunkt der Erstellung dieses Buches frei herunterladbar, quelloffen und unterliegen einer liberalen Lizenz, ähnlich der von Python. Wir erheben jedoch keinen Anspruch auf juristisches Fachwissen und Lizenzen können sich im Laufe der Zeit ändern, daher ist es immer ratsam, sie zu überprüfen.

Python-Entwicklung und -Versionen

Python wird von einem Team von Kernentwicklern unter der Leitung von Guido van Rossum, dem Erfinder und Architekten von Python und jetzt "ex" Benevolent Dictator for Life (BDFL), entwickelt, gepflegt und veröffentlicht. Dieser Titel bedeutete, dass Guido das letzte Wort darüber hatte, was Teil der Python-Sprache und der Standardbibliothek wurde. Als Guido beschloss, sich als BDFL zurückzuziehen, wurde seine Entscheidungsfunktion von einem kleinen "Lenkungsrat" übernommen, der von den PSF-Mitgliedern für jeweils ein Jahr gewählt wurde.

Das geistige Eigentum von Python liegt bei der PSF, einer gemeinnützigen Gesellschaft, die sich der Förderung von Python widmet (siehe "Python Software Foundation"). Viele PSF-Fellows und -Mitglieder haben Commit-Rechte für die Referenz-Quellcode-Repositories von Python, wie im "Python Developer's Guide" beschrieben, und die meisten Python-Committer sind Mitglieder oder Fellows der PSF.

Vorgeschlagene Änderungen an Python werden in öffentlichen Dokumenten, den Python Enhancement Proposals (PEPs), beschrieben. PEPs werden von Python-Entwicklern und der Python-Gemeinschaft diskutiert und schließlich vom Steering Council angenommen oder abgelehnt. (Der Lenkungsrat kann Debatten und vorläufige Abstimmungen berücksichtigen, ist aber nicht an sie gebunden.) Hunderte von Menschen tragen durch PEPs, Diskussionen, Fehlerberichte und Patches zu den Python-Quellen, -Bibliotheken und -Dokumenten zur Python-Entwicklung bei.

Das Python-Kernteam veröffentlicht Unterversionen von Python (3.x für wachsende Werte von x), die auch als "Feature Releases" bekannt sind, derzeit einmal pro Jahr.

Jedes Minor-Release (im Gegensatz zu den Bug-Fix-Microreleases) fügt Funktionen hinzu, die Python leistungsfähiger machen, achtet aber auch darauf, die Abwärtskompatibilität zu wahren. Python 3.0, das die Abwärtskompatibilität aufheben durfte, um überflüssige "Legacy"-Funktionen zu entfernen und die Sprache zu vereinfachen, wurde erstmals im Dezember 2008 veröffentlicht. Python 3.11 (die letzte stabile Version zum Zeitpunkt der Veröffentlichung) wurde im Oktober 2022 veröffentlicht.

Jede Nebenversion 3.x wird zunächst in Alpha-Versionen zur Verfügung gestellt, die als 3.xa0, 3.xa1usw. gekennzeichnet sind. Nach den Alphas folgt mindestens eine Beta-Version, 3.xb1, und nach den Betas mindestens ein Release Candidate, 3.xrc1. Wenn die endgültige Version von 3.x (3.x.0) herauskommt, ist sie solide, zuverlässig und auf allen wichtigen Plattformen getestet. Jeder Python-Programmierer kann dazu beitragen, dies zu gewährleisten, indem er Alphas, Betas und Release Candidates herunterlädt, sie ausprobiert und Fehler meldet, wenn Probleme auftauchen.

Sobald ein Minor Release erschienen ist, richtet sich ein Teil der Aufmerksamkeit des Kernteams auf das nächste Minor Release. In der Regel gibt es jedoch alle zwei Monate eine neue Version (z.B. 3.x.1, 3.x.2 usw.), die keine neuen Funktionen hinzufügt, sondern Fehler behebt, Sicherheitsprobleme löst, Python auf neue Plattformen portiert, die Dokumentation verbessert und Werkzeuge und (100% abwärtskompatible!) Optimierungen hinzufügt.

Die Abwärtskompatibilität von Python ist innerhalb der Hauptversionen recht gut. Du kannst Code und Dokumentation für alle alten Versionen von Python online finden, und im Anhang findest du eine zusammenfassende Liste der Änderungen in jeder der in diesem Buch behandelten Versionen.

Python-Ressourcen

Die reichste Python-Ressource ist das Internet: Beginne auf der Python-Homepage, die voller Links zum Erkunden ist.

Dokumentation

Sowohl CPython als auch PyPy verfügen über eine gute Dokumentation. Du kannst die Handbücher von CPython online lesen (wir nennen sie oft "die Online-Dokumente"), und es gibt auch verschiedene Formate zum Herunterladen, die sich zum Offline-Anschauen, Durchsuchen und Drucken eignen. Die Python-Dokumentationsseite enthält zusätzliche Verweise auf eine Vielzahl anderer Dokumente. Es gibt auch eine Dokumentationsseite für PyPy, und du kannst online FAQs zu Python und PyPy finden.

Python-Dokumentation für Nicht-Programmierer

Die meisten Python-Dokumentationen (einschließlich dieses Buches) setzen ein gewisses Maß an Kenntnissen in der Softwareentwicklung voraus. Python ist jedoch auch für Programmieranfänger/innen gut geeignet, daher gibt es Ausnahmen von dieser Regel. Gute einführende, kostenlose Online-Texte für Nicht-Programmierer sind z. B.:

Eine hervorragende Ressource zum Erlernen von Python (für Nicht-Programmierer und auch für weniger erfahrene Programmierer) ist das Wiki "Beginners' Guide to Python", das eine Fülle von Links und Tipps enthält. Es wird von der Community kuratiert und bleibt daher immer auf dem neuesten Stand, da sich die verfügbaren Bücher, Kurse, Tools usw. ständig weiterentwickeln und verbessern.

Erweiterungsmodule und Python-Quellen

Ein guter Ausgangspunkt für die Erkundung von Python-Erweiterungspaketen und -Quellen ist der Python Package Index (einigen von uns alten Hasen noch liebevoll als "The Cheese Shop" bekannt, aber inzwischen allgemein als PyPI bezeichnet), der zum Zeitpunkt der Erstellung dieses Artikels mehr als 400.000 Pakete mit Beschreibungen und Hinweisen enthält.

Die Standard-Python-Quelldistribution enthält exzellenten Python-Quellcode in der Standardbibliothek und im Tools-Verzeichnis sowie den C-Quellcode für die vielen eingebauten Erweiterungsmodule. Auch wenn du kein Interesse daran hast, Python aus dem Quellcode zu erstellen, empfehlen wir dir, die Python-Quelldistribution (z. B. die letzte stabile Version von Python 3.11) herunterzuladen und zu entpacken, um sie zu studieren. Wenn du möchtest, kannst du auch die aktuelle Version der Python-Standardbibliothek online einsehen.

Viele Python-Module und -Tools, die in diesem Buch behandelt werden, haben auch eigene Websites. Wir verweisen auf diese Seiten in den entsprechenden Kapiteln.

Bücher

Obwohl eine reichhaltige Informationsquelle ist, haben Bücher immer noch ihren Platz (wenn du nicht mit uns übereinstimmen würdest, hätten wir dieses Buch nicht geschrieben und du würdest es nicht lesen). Bücher über Python gibt es viele. Hier sind ein paar, die wir empfehlen (einige decken eher ältere als aktuelle Python 3 Versionen ab):

  • Wenn du schon ein wenig programmieren kannst, aber gerade erst anfängst, Python zu lernen, und du grafische Lehrmethoden magst, könnte dir Head First Python, 2. Wie alle Bücher der Head First-Reihe nutzt es Grafiken und Humor, um sein Thema zu vermitteln.

  • Dive Into Python 3 von Mark Pilgrim (Apress) lehrt anhand von Beispielen auf eine schnelle und gründliche Art und Weise, die sich gut für Leute eignet, die bereits Experten in anderen Sprachen sind.

  • Python für Einsteiger: From Novice to Professional, von Magnus Lie Hetland (Apress), lehrt sowohl durch gründliche Erklärungen als auch durch die Entwicklung kompletter Programme in verschiedenen Anwendungsbereichen.

  • Fluent Python von Luciano Ramalho (O'Reilly) ist ein hervorragendes Buch für erfahrenere Entwickler, die mehr Python-Idiome und -Funktionen nutzen möchten.

Gemeinschaft

Eine der größten Stärken von Python ist seine robuste, freundliche und einladende Community. Python-Programmiererinnen und -Programmierer treffen sich auf Konferenzen, "Hackathons" (in der Python-Community oft als Sprints bezeichnet) und in lokalen Benutzergruppen, diskutieren aktiv über gemeinsame Interessen und helfen sich gegenseitig auf Mailinglisten und in sozialen Medien. Eine vollständige Liste der Kontaktmöglichkeiten findest du unter https://www.python.org/community.

Python Software Foundation

Die PSF besitzt nicht nur die geistigen Eigentumsrechte an der Programmiersprache Python ( ), sondern fördert auch die Python-Gemeinschaft. Sie sponsert u. a. Benutzergruppen, Konferenzen und Sprints und vergibt Zuschüsse für Entwicklung, Öffentlichkeitsarbeit und Bildung. Die PSF hat Dutzende von Fellows (die für ihre Beiträge zu Python nominiert wurden, darunter das gesamte Python-Kernteam und drei der Autoren dieses Buches), Hunderte von Mitgliedern, die Zeit, Arbeit und Geld spenden (darunter viele, die mit Community Service Awards ausgezeichnet wurden), und Dutzende von Unternehmen, die als Sponsoren auftreten. Jeder, der Python nutzt und unterstützt, kann Mitglied der PSF werden.7 Auf der Mitgliedschaftsseite findest du Informationen über die verschiedenen Mitgliedsstufen und darüber, wie du Mitglied der PSF werden kannst. Wenn du selbst einen Beitrag zu Python leisten möchtest, schau dir den "Python Developer's Guide" an.

Arbeitsgruppen

Arbeitsgruppen sind Ausschüsse, die von der PSF eingerichtet wurden, um bestimmte, wichtige Projekte für Python durchzuführen. Hier sind einige Beispiele für aktive Arbeitsgruppen zum Zeitpunkt der Erstellung dieses Artikels:

Python-Konferenzen

gibt es weltweit viele Python-Konferenzen. Zu den allgemeinen Python-Konferenzen gehören internationale und regionale Konferenzen wie die PyCon und die EuroPython, aber auch lokale Konferenzen wie die PyOhio und die PyCon Italia. Zu den thematischen Konferenzen gehören SciPy und PyData. Im Anschluss an die Konferenzen finden oft Coding Sprints statt, bei denen Python-Akteure mehrere Tage lang gemeinsam an bestimmten Open-Source-Projekten programmieren und sich austauschen. Eine Liste der Konferenzen findest du auf der Seite Community Conferences and Workshops. Mehr als 17.000 Videos mit Vorträgen über Python von mehr als 450 Konferenzen sind auf der Website PyVideo verfügbar.

Nutzergruppen und Organisationen

Die Python-Gemeinschaft hat lokale Benutzergruppen auf allen Kontinenten außer der Antarktis8mehr als 1.600 davon, laut der Liste im LocalUserGroups-Wiki. Es gibt Python-Meetups auf der ganzen Welt. PyLadies ist eine internationale Mentorengruppe mit lokalen Gruppen zur Förderung von Frauen in Python; jeder, der Interesse an Python hat, ist willkommen. NumFOCUS, eine gemeinnützige Organisation zur Förderung offener Praktiken in Forschung, Daten und wissenschaftlichem Rechnen, sponsert die PyData-Konferenz und andere Projekte.

Mailinglisten

Auf der Seite Community Mailing Lists findest du Links zu verschiedenen Mailinglisten, die mit Python zu tun haben (und zu einigen Usenet-Gruppen, für diejenigen unter uns, die sich noch an das Usenet erinnern!). Alternativ kannst du auch in Mailman nach aktiven Mailinglisten suchen, die eine große Bandbreite an Interessen abdecken. Offizielle Ankündigungen, die sich auf Python beziehen, werden auf der Liste python-announce veröffentlicht. Wenn du um Hilfe bei bestimmten Problemen bitten möchtest, schreibe an help@python.org. Wenn du unter Hilfe beim Lernen oder Lehren von Python suchst, schreibe an tutor@python.org, oder - noch besser - werde Mitglied der Liste. Für eine nützliche wöchentliche Zusammenfassung von Neuigkeiten und Artikeln rund um Python kannst du Python Weekly abonnieren. Du kannst Python Weekly auch unter @python_discussions@mastodon.social folgen.

Soziale Medien

Unter findest du einen RSS-Feed mit Python-Blogs, siehe Planet Python. Wenn du dich für die Entwicklungen der Sprache interessierst, schau dir discuss.python.org an - dortgibt es nützliche Zusammenfassungen, wenn du nicht regelmäßig vorbeischaust. Auf Twitter kannst du @ThePSF folgen. Im Libera.Chat im IRC gibt es mehrere Kanäle, die sich mit Python befassen: Der wichtigste ist #python. Auf LinkedIn gibt es viele Python-Gruppen, darunter Python Web Developers. Auf Slack kannst du der PySlackers-Community beitreten. Auf Discord findest du Python Discord. Technische Fragen und Antworten zur Python-Programmierung kannst du auch auf Stack Overflow unter einer Vielzahl von Tags finden und verfolgen, darunter [python]. Python ist derzeit die aktivste Programmiersprache auf Stack Overflow und viele nützliche Antworten mit aufschlussreichen Diskussionen sind dort zu finden. Wenn du Podcasts magst, schau dir Python-Podcasts an, z. B. Python Bytes.

Installation

Du kannst die klassischen (CPython) und PyPy-Versionen von Python auf den meisten Plattformen installieren. Mit einem geeigneten Entwicklungssystem (C für CPython; PyPy, das in Python selbst kodiert ist, muss nur zuerst CPython installiert werden) kannst du die Python-Versionen aus den jeweiligen Quellcode-Distributionen installieren. Auf gängigen Plattformen gibt es auch die empfohlene Alternative, vorgefertigte Binärdistributionen zu installieren.

Python installieren, wenn es vorinstalliert ist

Wenn deine Plattform mit einer vorinstallierten Version von Python ausgestattet ist, solltest du trotzdem eine aktuelle Version für deine eigene Codeentwicklung installieren. Wenn du das tust, solltest du die ursprüngliche Version deiner Plattform nicht entfernen oder überschreiben, sondern die neue Version neben der ersten installieren. Auf diese Weise störst du keine andere Software, die Teil deiner Plattform ist: Diese Software könnte auf die spezielle Python-Version angewiesen sein, die mit der Plattform selbst geliefert wurde.

Die Installation von CPython aus einer Binärdistribution ist schneller, spart dir auf einigen Plattformen viel Arbeit und ist die einzige Möglichkeit, wenn du keinen geeigneten C-Compiler hast. Die Installation aus dem Quellcode gibt dir mehr Kontrolle und Flexibilität und ist ein Muss, wenn du keine geeignete vorkompilierte Binärdistribution für deine Plattform findest. Auch wenn du von den Binärdateien installierst, ist es am besten, auch die Quellcode-Distribution herunterzuladen, da sie Beispiele, Demos und Werkzeuge enthalten kann, die in den vorgefertigten Binärdateien normalerweise fehlen. Wir schauen uns als Nächstes an, wie du beides machst.

Python aus Binärdateien installieren

Wenn deine Plattform populär und aktuell ist, wirst du leicht vorgefertigte, paketierte Binärversionen von Python finden, die du installieren kannst. Binärpakete installieren sich in der Regel selbst, entweder direkt als ausführbare Programme oder über entsprechende Systemtools wie den Red Hat Package Manager (RPM) auf einigen Linux-Versionen und den Microsoft Installer (MSI) auf Windows. Nachdem du ein Paket heruntergeladen hast, installierst du es, indem du das Programm ausführst und die Installationsparameter auswählst, z. B. das Verzeichnis, in dem Python installiert werden soll. Unter Windows wählst du die Option "Python 3.10 zum PATH hinzufügen", damit das Installationsprogramm den Installationsort zum PATH hinzufügt, damit du Python einfach über eine Eingabeaufforderung verwenden kannst (siehe "Das Python-Programm").

Die "offiziellen" Binärdateien findest du auf der Download-Seite der Python-Website: Klicke auf die Schaltfläche "Python 3.11.x herunterladen", um die aktuellste Binärdatei für die Plattform deines Browsers herunterzuladen.

Viele Drittanbieter stellen kostenlose Python-Binärinstallationsprogramme für andere Plattformen zur Verfügung. Es gibt Installer für Linux-Distributionen, unabhängig davon, ob deine Distribution RPM-basiert ist (Red Hat, Fedora, Mandriva, SUSE usw.) oder auf Debian basiert (einschließlich Ubuntu, der wahrscheinlich beliebtesten Linux-Distribution zum Zeitpunkt der Erstellung dieses Artikels). Auf der Seite Andere Plattformen findest du Links zu Binärdistributionen für inzwischen etwas exotische Plattformen wie AIX, OS/2, RISC OS, IBM AS/400, Solaris, HP-UX usw. (oft nicht die neuesten Python-Versionen, da diese Plattformen inzwischen "altmodisch" sind) sowie eine für die sehr aktuelle iOS-Plattform, das Betriebssystem der beliebten iPhone- und iPad-Geräte.

Anaconda, das bereits in diesem Kapitel erwähnt wurde, ist eine Binärdistribution, die Python, den conda-Paketmanager und Hunderte von Erweiterungen von Drittanbietern enthält, insbesondere für Wissenschaft, Mathematik, Technik und Datenanalyse. Sie ist für Linux, Windows und macOS verfügbar. Miniconda, das ebenfalls bereits in diesem Kapitel erwähnt wurde, ist das gleiche Paket, aber ohne all diese Erweiterungen; mit conda kannst du selektiv Teilmengen davon installieren.

macOS

Der beliebte Open-Source-Paketmanager Homebrew eines Drittanbieters für macOS bietet neben vielen anderen Open-Source-Paketen auch hervorragende Versionen von Python. conda, das in "Anaconda und Miniconda" erwähnt wird , funktioniert ebenfalls gut unter macOS.

Installation von Python aus dem Quellcode

Um CPython aus dem Quellcode zu installieren, brauchst du eine Plattform mit einem ISO-kompatiblen C-Compiler und Tools wie make. Unter Windows wird Python normalerweise mit Visual Studio erstellt (idealerweise mit VS 2022, das derzeit für Entwickler kostenlos erhältlich ist).

Um den Python-Quellcode herunterzuladen, besuche die Seite Python Source Releases (auf der Python-Website in der Menüleiste auf Downloads gehen und "Source code" auswählen) und wähle deine Version.

Die Datei unter dem Link "Gzipped source tarball" hat die Dateierweiterung .tgz; das ist gleichbedeutend mit .tar.gz (d.h. ein tar-Archiv mit Dateien, die mit dem bekannten gzip-Kompressor komprimiert wurden). Alternativ kannst du den Link "XZ-komprimierter Quell-Tarball" verwenden, um eine Version mit der Dateierweiterung .tar.xz statt .tgz zu erhalten, die mit dem noch leistungsfähigeren xz-Kompressor komprimiert wurde, wenn du über die nötigen Werkzeuge für die XZ-Kompression verfügst.

Microsoft Windows

Unter Windows kann die Installation von Python aus dem Quellcode mühsam sein, es sei denn, du bist mit Visual Studio vertraut und daran gewöhnt, in einem textorientierten Fenster zu arbeiten, das als Eingabeaufforderung bekannt ist.9Die meisten Windows-Benutzer ziehen es vor, einfach das vorgefertigte Python aus dem Microsoft Store herunterzuladen.

Wenn du mit den folgenden Anweisungen Probleme hast, bleibe bei der Installation von Python aus den Binärdateien, wie im vorherigen Abschnitt beschrieben. Es ist sowieso am besten, eine separate Installation aus den Binärdateien vorzunehmen, auch wenn du aus den Quellen installierst. Wenn dir bei der Verwendung der Quellcode-Version etwas Merkwürdiges auffällt, überprüfe es noch einmal mit der Installation aus den Binärdateien. Wenn die Seltsamkeiten verschwinden, muss das an einem Fehler in der Installation aus den Quelldateien liegen.

In den folgenden Abschnitten gehen wir der Übersichtlichkeit halber davon aus, dass du einen neuen Ordner mit dem Namen %USERPROFILE%\py angelegt hast (z.B. c:\users\tim\py), was du z.B. mit dem Befehl mkdir in einem beliebigen Befehlsfenster tun kannst. Lade die .tgz-Quelldatei - zum Beispiel Python-3.11.0.tgz - indiesen Ordner herunter. Natürlich kannst du den Ordner so benennen und platzieren, wie es dir am besten passt: Unsere Namenswahl dient nur der Veranschaulichung.

Entkomprimieren und Entpacken des Python-Quellcodes

Du kannst eine .tgz- oder .tar.xz-Datei zum Beispiel mit dem kostenlosen Programm 7-Zip entpacken und entpacken. Lade die entsprechende Version von der Download-Seite herunter, installiere sie und führe sie mit der .tgz-Datei (z.B. c:\users\alex\py\Python-3.11.0.tgz) aus, die du von der Python-Website heruntergeladen hast. Angenommen, du hast diese Datei in deinen Ordner %USERPROFILE%\py heruntergeladen (oder ggf. von %USERPROFILE%\downloads dorthin verschoben), dann hast du jetzt einen Ordner namens %USERPROFILE%\py\Python-3.11.0 oder ähnlich, je nachdem, welche Version du heruntergeladen hast. Dies ist die Wurzel eines Baums, der die gesamte Standard-Python-Distribution in Form des Quellcodes enthält.

Erstellung des Python-Quellcodes

Öffne die Datei readme.txt, die sich im Unterverzeichnis PCBuild dieses Stammverzeichnisses befindet, mit einem beliebigen Texteditor und folge den detaillierten Anweisungen dort.

Unix-ähnliche Plattformen

Auf Unix-ähnlichen Plattformen ist die Installation von Python aus dem Quellcode in der Regel einfach.10 In den folgenden Abschnitten gehen wir der Übersichtlichkeit halber davon aus, dass du ein neues Verzeichnis mit dem Namen ~/py erstellt und die .tgz-Quelldatei - zum Beispiel Python-3.11.0.tgz - indieses Verzeichnis heruntergeladen hast. Natürlich kannst du das Verzeichnis so benennen und platzieren, wie es dir am besten gefällt: Unsere Namenswahl dient nur der Veranschaulichung.

Entkomprimieren und Entpacken des Python-Quellcodes

Du kannst eine .tgz- oder .tar.xz-Datei mit der beliebten GNU-Version von tar dekomprimieren und entpacken. Gib einfach Folgendes in eine Eingabeaufforderung ein:

$ cd ~/py && tar xzf Python-3.11.0.tgz

Du hast jetzt ein Verzeichnis namens ~/py/Python-3.11.0 oder ähnlich, je nachdem, welche Version du heruntergeladen hast. Dies ist die Wurzel eines Baums, der die gesamte Standard-Python-Distribution in Form des Quellcodes enthält.

Konfigurieren, Bauen und Testen

Ausführliche Hinweise findest du in der README-Datei in diesem Verzeichnis unter der Überschrift "Build instructions", und wir empfehlen dir, diese Hinweise zu lesen. Im einfachsten Fall reicht es jedoch aus, wenn du die folgenden Befehle in eine Eingabeaufforderung eingibst:

$ cd ~/py/Python-3.11/0
$ ./configure
    [configure writes much information, snipped here]
$ make
    [make takes quite a while and emits much information, snipped here]

Wenn du make ausführst, ohne vorher ./configure auszuführen, führt make implizit ./configure aus. Wenn make fertig ist, überprüfe, ob das Python, das du gerade gebaut hast, wie erwartet funktioniert:

$ make test
    [takes quite a while, emits much information, snipped here]

Normalerweise bestätigt make test, dass dein Build funktioniert, informiert dich aber auch, dass einige Tests übersprungen wurden, weil optionale Module fehlten.

Einige der Module sind plattformspezifisch (z. B. funktionieren einige nur auf Maschinen, auf denen das alte IRIX-Betriebssystem von SGI läuft); um diese brauchst du dich nicht zu kümmern. Andere Module können jedoch übersprungen werden, weil sie von anderen Open-Source-Paketen abhängen, die derzeit nicht auf deinem Rechner installiert sind. Unter Unix kann zum Beispiel das Modul _tkinter, dasfür die Ausführung des Tkinter GUI-Pakets und der integrierten Entwicklungsumgebung IDLE benötigt wird, die mit Python geliefert werden, nur gebaut werden, wenn ./configure eine Installation von Tcl/Tk 8.0 oder höher auf deinem Rechner findet. In der README-Datei findest du weitere Details und spezielle Hinweise zu verschiedenen Unix- und Unix-ähnlichen Plattformen.

Wenn du aus dem Quellcode baust, kannst du deine Konfiguration auf verschiedene Weise anpassen. Zum Beispiel kannst du Python auf eine besondere Art und Weise bauen, die dir hilft, Speicherlecks zu beheben, wenn du C-codierte Python-Erweiterungen entwickelst (siehe "Bauen und Installieren von C-codierten Python-Erweiterungen" in Kapitel 25). ./configure --help ist eine gute Quelle für Informationen über die Konfigurationsoptionen, die du verwenden kannst.

Installieren nach dem Build

Standardmäßig bereitet ./configure Python für die Installation in /usr/local/bin und /usr/local/lib vor. Du kannst diese Einstellungen ändern, indem du ./configure mit der Option --prefix ausführst, bevor du make startest. Wenn du zum Beispiel eine private Installation von Python im Unterverzeichnis py311 deines Heimatverzeichnisses haben möchtest, führe aus:

$ cd ~/py/Python-3.11.0
$ ./configure --prefix=~/py311

und fahre mit make wie im vorherigen Abschnitt fort. Wenn du mit dem Bauen und Testen von Python fertig bist, führst du den folgenden Befehl aus, um alle Dateien zu installieren:11

$ make install

Der Benutzer, der make install ausführt, muss Schreibrechte für die Zielverzeichnisse haben. Je nachdem, welche Zielverzeichnisse du auswählst und welche Berechtigungen du für diese Verzeichnisse hast, musst du dich beim Ausführen von make install als root, bin oder ein anderer Benutzer anmelden. Die übliche Redewendung für diesen Zweck ist sudo make install: Wenn sudo nach einem Passwort fragt, gib das Passwort deines aktuellen Benutzers ein, nicht das von root. Eine alternative und empfohlene Methode ist die Installation in einer virtuellen Umgebung, wie in "Python-Umgebungen" beschrieben .

1 Für Android, siehe https://wiki.python.org/moin/Android, und für iPhone und iPad, siehe Python für iOS und iPadOS.

2 Python-Versionen ab 3.11 verwenden "C11 ohne optionale Funktionen" und geben an, dass "die öffentliche API mit C++ kompatibel sein sollte".

3 Das kann in vielen Programmiersprachen sein, nicht nur in Python.

4 Die Fähigkeiten von condaerstrecken sich auch auf andere Sprachen, und Python ist einfach eine weitere Abhängigkeit.

5 250+ automatisch installiert mit Anaconda, 7 500+ explizit installierbar mit conda install.

6 Ein beliebtes Geschäftsmodell ist Freemium: Es gibt sowohl eine kostenlose Version als auch eine kommerzielle "Premium"-Version mit technischem Support und vielleicht zusätzlichen Funktionen.

7 Die Python Software Foundation (PSF) betreibt eine umfangreiche Infrastruktur zur Unterstützung des Python-Ökosystems. Spenden an die PSF sind immer willkommen.

8 Wir müssen uns dafür einsetzen, dass sich mehr Pinguine für unsere Sprache interessieren!

9 Oder, in modernen Windows-Versionen, das weitaus bessere Windows Terminal.

10 Die meisten Probleme bei Installationen aus dem Quellcode betreffen das Fehlen verschiedener unterstützender Bibliotheken, was dazu führen kann, dass einige Funktionen im erstellten Interpreter fehlen. Der "Python Developers' Guide" erklärt, wie man mit Abhängigkeiten auf verschiedenen Plattformen umgeht. build-python-from-source.com ist eine hilfreiche Seite, die dir alle Befehle zeigt, die du brauchst, um eine bestimmte Python-Version herunterzuladen, zu bauen und zu installieren, sowie die meisten der benötigten unterstützenden Bibliotheken auf verschiedenen Linux-Plattformen.

11 Oder mache altinstall, wenn du keine Links zur ausführbaren Python-Datei und den Handbuchseiten erstellen willst.

Get Python in a Nutshell, 4. Auflage 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.