Документация Python неофициальный перевод
Содержание страницы

16. ПриложениеAppendix

16.1. Интерактивный режимInteractive Mode

16.1.1. Обработка ошибокError Handling

Когда возникает ошибка, интерпретатор выводит сообщение об ошибке и трассировку стека. В интерактивном режиме после этого он возвращается к основному приглашению; если ввод был из файла, он завершается с ненулевым кодом возврата после вывода трассировки стека. (Исключения, обрабатываемые предложением except в операторе try, не считаются ошибками в данном контексте.) Некоторые ошибки являются безусловно фатальными и приводят к завершению с ненулевым кодом; это относится к внутренним несоответствиям и некоторым случаям нехватки памяти. Все сообщения об ошибках записываются в стандартный поток ошибок; обычный вывод выполненных команд записывается в стандартный вывод.

Нажатие символа прерывания (обычно Control-C или Delete) на первичном или вторичном приглашении отменяет ввод и возвращает к первичному приглашению. 1 Нажатие прерывания во время выполнения команды вызывает KeyboardInterrupt исключение, которое может быть обработано с помощью try оператора.

16.1.2. Исполняемые сценарии PythonExecutable Python Scripts

В Unix-системах BSD-подобного типа сценарии Python можно сделать непосредственно исполняемыми, как сценарии оболочки, поместив строку

#!/usr/bin/env python3.5

(предполагая, что интерпретатор находится в PATH пользователя) в начале сценария и установив для файла режим исполняемого. Символы #! должны быть первыми двумя символами файла. На некоторых платформах эта первая строка должна заканчиваться символом конца строки в стиле Unix ('\n'), а не Windows ('\r\n'). Обратите внимание, что символ решётки '#' используется для начала комментария в Python.

Сценарию можно установить режим исполняемого файла, или разрешение, с помощью команды chmod.

$ chmod +x myscript.py

В системах Windows нет понятия «режим исполняемого». Установщик Python автоматически связывает файлы .py с python.exe, так что dвойной щелчок по файлу Python запускает его как сценарий. Расширение также может быть .pyw, в этом случае консольное окно, которое обычно появляется, подавляется.

16.1.3. Интерактивный файл запускаThe Interactive Startup File

При интерактивном использовании Python часто бывает удобно иметь некоторые стандартные команды, выполняемые каждый раз при запуске интерпретатора. Это можно сделать, установив переменную окружения с именем PYTHONSTARTUP, указывающую на имя файла, содержащего команды запуска. Это похоже на возможность .profile оболочек Unix.

Этот файл читается только в интерактивных сеансах, а не когда Python читает команды из сценария, и не когда /dev/tty указан как явный источник команд (который в остальном ведёт себя как интерактивный сеанс). Он выполняется в том же пространстве имён, в котором выполняются интерактивные команды, так что объекты, которые он определяет или импортирует, могут использоваться без уточнения в интерактивном сеансе. Вы также можете изменить приглашения sys.ps1 и sys.ps2 в этом файле.

Если требуется читать дополнительный файл запуска из текущего каталога, это можно запрограммировать в глобальном файле запуска с помощью кода вроде if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read()). Если требуется использовать файл запуска в сценарии, это нужно сделать явно в сценарии:

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 предоставляет две точки подключения для настройки: sitecustomize и usercustomize. Чтобы увидеть, как это работает, сначала нужно найти расположение каталога site-packages пользователя. Запустите Python и выполните следующий код:

>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.5/site-packages'

Теперь можно создать файл с именем usercustomize.py в этом каталоге и поместить в него всё что угодно. Он будет влиять на каждый запуск Python, если только он не запущен с опцией -s, отключающей автоматический импорт.

sitecustomize работает аналогично, но обычно создаётся администратором компьютера в глобальном каталоге site-packages и импортируется перед usercustomize. За дополнительными сведениями обратитесь к документации модуля site.

Сноски

1

Проблема с пакетом GNU Readline может помешать этому.