16. Anhang¶
16.1. Interaktiver Modus¶
Es gibt zwei Varianten der interaktiven REPL. Der klassische Basisinterpreter wird auf allen Plattformen mit minimalen Zeilensteuerungsfunktionen unterstützt.
Unter Windows oder Unix-ähnlichen Systemen mit curses-Unterstützung wird seit Python 3.13 standardmäßig eine neue interaktive Shell verwendet. Diese unterstützt Farbe, mehrzeilige Bearbeitung, Verlaufssuche und Einfügemodus. Um die Farbe zu deaktivieren, siehe Steuerung der Farbe für Details. Funktionstasten bieten zusätzliche Funktionalität. F1 startet den interaktiven Hilfebrowser pydoc. F2 ermöglicht die Suche im Kommandozeilenverlauf ohne Ausgabe oder die Eingabeaufforderungen >>> und …. F3 startet den „Einfügemodus“, der das Einfügen größerer Codeblöcke erleichtert. Drücken Sie F3, um zur regulären Eingabeaufforderung zurückzukehren.
Wenn Sie die neue interaktive Shell verwenden, beenden Sie die Shell, indem Sie exit oder quit eingeben. Das Hinzufügen von Klammern nach diesen Befehlen ist nicht erforderlich.
Wenn die neue interaktive Shell nicht gewünscht ist, kann sie über die Umgebungsvariable PYTHON_BASIC_REPL deaktiviert werden.
16.1.1. Fehlerbehandlung¶
Wenn ein Fehler auftritt, gibt der Interpreter eine Fehlermeldung und einen Stack-Trace aus. Im interaktiven Modus kehrt er zur primären Eingabeaufforderung zurück; wenn die Eingabe aus einer Datei kam, wird sie nach der Ausgabe des Stack-Trace mit einem von Null verschiedenen Exit-Status beendet. (Ausnahmen, die von einer except-Klausel in einer try-Anweisung behandelt werden, sind in diesem Kontext keine Fehler.) Einige Fehler sind bedingungslos fatal und führen zu einem Beenden mit einem von Null verschiedenen Exit-Status; dies gilt für interne Inkonsistenzen und einige Fälle von Speichermangel. Alle Fehlermeldungen werden auf den Standardfehlerstrom geschrieben; normale Ausgaben von ausgeführten Befehlen werden auf die Standardausgabe geschrieben.
Das Tippen des Interrupt-Zeichens (normalerweise Control-C oder Delete) an der primären oder sekundären Eingabeaufforderung bricht die Eingabe ab und kehrt zur primären Eingabeaufforderung zurück. [1] Das Tippen eines Interrupts, während ein Befehl ausgeführt wird, löst die Ausnahme KeyboardInterrupt aus, die von einer try-Anweisung behandelt werden kann.
16.1.2. Ausführbare Python-Skripte¶
Auf Unix-Systemen vom Typ BSD können Python-Skripte direkt ausführbar gemacht werden, ähnlich wie Shell-Skripte, indem die Zeile
#!/usr/bin/env python3
(vorausgesetzt, der Interpreter befindet sich im PATH des Benutzers) am Anfang des Skripts steht und die Datei ausführbaren Modus erhält. Das #! muss das erste Zeichen des Skripts sein. Auf einigen Plattformen muss diese erste Zeile mit einem Unix-Zeilenumbruch ('\n') und nicht mit einem Windows-Zeilenumbruch ('\r\n') enden. Beachten Sie, dass das Rautenzeichen, '#', verwendet wird, um einen Kommentar in Python zu starten.
Das Skript kann mit dem Befehl chmod einen ausführbaren Modus oder eine Berechtigung erhalten.
$ chmod +x myscript.py
Unter Windows gibt es keinen Begriff des „ausführbaren Modus“. Der Python-Installer assoziiert automatisch .py-Dateien mit python.exe, sodass ein Doppelklick auf eine Python-Datei sie als Skript ausführt. Die Erweiterung kann auch .pyw sein, in diesem Fall wird das normalerweise erscheinende Konsolenfenster unterdrückt.
16.1.3. Die interaktive Startdatei¶
Wenn Sie Python interaktiv verwenden, ist es oft praktisch, einige Standardbefehle auszuführen, die jedes Mal ausgeführt werden, wenn der Interpreter gestartet wird. Sie können dies tun, indem Sie eine Umgebungsvariable namens PYTHONSTARTUP auf den Namen einer Datei setzen, die Ihre Startbefehle enthält. Dies ähnelt dem .profile-Feature der Unix-Shells.
Diese Datei wird nur in interaktiven Sitzungen gelesen, nicht wenn Python Befehle aus einem Skript liest, und nicht, wenn /dev/tty als explizite Befehlsquelle angegeben wird (was ansonsten wie eine interaktive Sitzung funktioniert). Sie wird im selben Namensraum ausgeführt, in dem interaktive Befehle ausgeführt werden, sodass Objekte, die sie definiert oder importiert, ohne Qualifizierung in der interaktiven Sitzung verwendet werden können. Sie können auch die Eingabeaufforderungen sys.ps1 und sys.ps2 in dieser Datei ändern.
Wenn Sie eine zusätzliche Startdatei aus dem aktuellen Verzeichnis lesen möchten, können Sie dies in der globalen Startdatei mit Code wie if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read()) programmieren. Wenn Sie die Startdatei in einem Skript verwenden möchten, müssen Sie dies explizit im Skript tun.
import os
filename = os.environ.get('PYTHONSTARTUP')
if filename and os.path.isfile(filename):
with open(filename) as fobj:
startup_file = fobj.read()
exec(startup_file)
16.1.4. Die Anpassungsmodule¶
Python bietet zwei Hooks, um es anzupassen: sitecustomize und usercustomize. Um zu sehen, wie es funktioniert, müssen Sie zuerst den Speicherort Ihres benutzerdefinierten site-packages-Verzeichnisses ermitteln. Starten Sie Python und führen Sie diesen Code aus:
>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.x/site-packages'
Sie können dann eine Datei namens usercustomize.py in diesem Verzeichnis erstellen und alles hineinschreiben, was Sie möchten. Sie wirkt sich auf jede Python-Invocations aus, es sei denn, sie wird mit der Option -s gestartet, um den automatischen Import zu deaktivieren.
sitecustomize funktioniert auf die gleiche Weise, wird aber typischerweise von einem Administrator des Computers im globalen site-packages-Verzeichnis erstellt und vor usercustomize importiert. Weitere Details finden Sie in der Dokumentation des site-Moduls.
Fußnoten