# 16. Załącznik

## 16.1. Tryb interaktywny

### 16.1.1. Przechwytywanie błędów

Gdy wystąpi błąd, interpreter wyświetla komunikat błędu i ślad stosu. W trybie interaktywnym zwraca je do wiersza polecenia; jeżeli wejście pochodzi z pliku, na wyjściu generowany jest kod wyjścia różny od zera po wyświetleniu śladu stosu. (Błędy przechwycone przez słowo kluczowe `except` w poleceniu `try` nie są błędami w tym kontekście). Niektóre błędy są bezwarunkowo krytyczne i wywołują wyjście z programu z kodem wyjścia różnym od zera; dotyczy to wewnętrznych niezgodności i - w niektórych przypadkach - przepełnienia pamięci. Wszystkie komunikaty błędów są wyświetlane na standardowym wyjściu błędów; zazwyczaj jest to normalne wyjście z wykonywania komend.

Wpisanie znaku przerwania (zazwyczaj `Control-C` lub `Delete`) w pierwszorzędny lub drugorzędny prompt anuluje tryb wpisywania i wraca do pierwszorzędnego prompta. 1 Wpisanie znaku przerwania podczas wykonywania komendy wywołuje wyjątek `KeyboardInterrupt`, który może być obsłużony instrukcją `try`.

### 16.1.2. Wykonywalne skrypty Pythona

W systemach uniksowych podobnych do BSD, skrypty Pythona można uczynić bezpośrednio wykonywalnymi, jak skrypty shell, przez dodanie linii

    #!/usr/bin/env python3.5

(zakładając, że interpreter jest na zmiennej `PATH` użytkownika) na początku skryptu i nadając plikowi tryb wykonywalny. `#!` muszą być pierwszymi dwoma znakami pliku. Na niektórych platformach ta pierwsza linia musi kończyć się uniksowym zakończeniem linii (`'\n'`), nie windowsowym zakończeniem linii (`'\r\n'`). Zwróć uwagę, że znak kratki, czy krzyżyka, `'#'`, jest używany do rozpoczęcia komentarza w Pythonie.

Skryptowi można nadać tryb wykonywalny, lub permission, przy użyciu komendy chmod.

    $ chmod +x myscript.py

W systemach Windows nie wyróżnia się „trybu wykonywalnego”. Instalator Pythona automatycznie powiązuje pliki `.py` z `python.exe`, żeby podwójne kliknięcie w plik Pythona uruchomiło go jako skrypt. Rozszerzeniem może być również `.pyw`. W tym przypadku okno konsoli, które normalnie się pojawia, zostanie ukryte.

### 16.1.3. Plik interaktywnego uruchomienia

Gdy używasz Pythona w trybie interaktywnym, często wygodne jest wykonywać jakieś standardowe komendy za każdym razem, gdy uruchamia się interpreter. Możesz to zrobić ustawiając zmienną środowiskową o nazwie `PYTHONSTARTUP` na nazwę pliku zawierającego twoje komendy uruchomieniowe. Jest to podobne do funkcji `.profile` shellów uniksowych.

Ten plik jest czytany tylko w sesjach interaktywnych, nie gdy Python czyta komendy ze skryptu i nie gdy `/dev/tty` jest podany jako źródło komend (które zachowuje się jak sesja interaktywna). Jest wykonywany w tym samym namespace’ie, w którym wykonują się interaktywne komendy, więc obiekty, które definiuje lub importuje mogą być używane bezpośrednio w interaktywnej sesji. Możesz również zmienić znaki prompt `sys.ps1` i `sys.ps2` w tym pliku.

If you want to read an additional start-up file from the current directory, you can program this in the global start-up file using code like `if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read())`. If you want to use the startup file in a script, you must do this explicitly in the script:

    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. The Customization Modules

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'

Now you can create a file named `usercustomize.py` in that directory and put anything you want in it. It will affect every invocation of Python, unless it is started with the `-s` option to disable the automatic import.

`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.

Przypisy

1

  Problem z pakietem GNU Readline może w tym przeszkodzić.