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.
