16. Anhang¶
16.1. Interaktiver Modus¶
16.1.1. Fehlerbehandlung¶
When an error occurs, the interpreter prints an error message and a stack trace.
In interactive mode, it then returns to the primary prompt; when input came from
a file, it exits with a nonzero exit status after printing the stack trace.
(Exceptions handled by an except clause in a try statement
are not errors in this context.) Some errors are unconditionally fatal and
cause an exit with a nonzero exit; this applies to internal inconsistencies and
some cases of running out of memory. All error messages are written to the
standard error stream; normal output from executed commands is written to
standard output.
Die Eingabe des Unterbrechungszeichens (normalerweise Control-C oder Delete) am primären oder sekundären Prompt bricht die Eingabe ab und kehrt zum primären Prompt zurück. 1 Das Auslösen einer Unterbrechung, während ein Befehl ausgeführt wird, löst die Ausnahme KeyboardInterrupt aus, die durch eine try-Anweisung behandelt werden kann.
16.1.2. Ausführbare Python-Skripte¶
Auf BSD-ähnlichen Unix-Systemen können Python-Skripte direkt ausführbar gemacht werden, genau wie Shell-Skripte, indem man die Zeile
#!/usr/bin/env python3.5
(unter der Annahme, dass sich der Interpreter im PATH des Benutzers befindet) an den Anfang des Skripts setzt und der Datei Rechte zur Ausführung gibt. Die Zeichen #! müssen die ersten beiden Zeichen der Datei sein. Auf einigen Plattformen muss diese erste Zeile mit einem Unix-Zeilenende ('\n') und nicht mit einem Windows-Zeilenende ('\r\n') enden. Beachte, dass das Rautezeichen '#' in Python verwendet wird, um einen Kommentar zu beginnen.
Das Skript kann mithilfe des Befehls chmod ausführbar gemacht werden.
$ chmod +x myscript.py
Auf Windows-Systemen gibt es kein Konzept eines "Ausführungsmodus". Der Python-Installer verknüpft .py-Dateien automatisch mit python.exe, sodass ein Doppelklick auf eine Python-Datei diese als Skript ausführt. Die Dateiendung kann auch .pyw sein; in diesem Fall wird das normalerweise erscheinende Konsolenfenster unterdrückt.
16.1.3. Die interaktive Startdatei¶
Wenn du Python interaktiv nutzt, ist es oft praktisch, bei jedem Start des Interpreters einige Standardbefehle ausführen zu lassen. Du kannst dies erreichen, indem du eine Umgebungsvariable namens PYTHONSTARTUP auf den Namen einer Datei setzt, die deine Startbefehle enthält. Dies ähnelt der .profile-Funktion von 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 Quelle für Befehle angegeben wird (was sich ansonsten wie eine interaktive Sitzung verhält). Sie wird im selben Namensraum ausgeführt, in dem interaktive Befehle ausgeführt werden, sodass darin definierte oder importierte Objekte ohne Pfadangabe in der interaktiven Sitzung verwendet werden können. Du kannst in dieser Datei auch die Prompts sys.ps1 und sys.ps2 ändern.
Wenn du eine zusätzliche Startdatei aus dem aktuellen Verzeichnis lesen möchtest, kannst du dies in der globalen Startdatei mit Code wie if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read()) programmieren. Wenn du die Startdatei in einem Skript verwenden möchtest, musst du 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 provides two hooks to let you customize it: sitecustomize and
usercustomize. To see how it works, you need first to find the location
of your user site-packages directory. Start Python and run this code:
>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.5/site-packages'
Jetzt kannst du in diesem Verzeichnis eine Datei namens usercustomize.py erstellen und beliebig füllen. Sie wirkt sich auf jeden Aufruf von Python aus, es sei denn, es wird mit der Option -s gestartet, um den automatischen Import zu deaktivieren.
sitecustomize works in the same way, but is typically created by an
administrator of the computer in the global site-packages directory, and is
imported before usercustomize. See the documentation of the site
module for more details.
Fußnoten
- 1
Ein Problem mit dem GNU-Readline-Paket kann dies verhindern.