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