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

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

Существует два варианта интерактивного REPL. Классический базовый интерпретатор поддерживается на всех платформах и имеет минимальные возможности редактирования строк.

On Windows, or Unix-like systems with `curses` support, a new interactive shell is used by default since Python 3.13. This one supports color, multiline editing, history browsing, and paste mode. To disable color, see Controlling color for details. Function keys provide some additional functionality. `F1` enters the interactive help browser `pydoc`. `F2` allows for browsing command-line history with neither output nor the >>> and … prompts. `F3` enters «paste mode», which makes pasting larger blocks of code easier. Press `F3` to return to the regular prompt.

При использовании новой интерактивной оболочки выйти из неё можно, набрав `exit` или `quit`. Добавлять скобки для вызова этих команд не обязательно.

Если новая интерактивная оболочка нежелательна, её можно отключить с помощью переменной окружения `PYTHON_BASIC_REPL`.

### 16.1.1. Обработка ошибок

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

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

### 16.1.2. Исполняемые Python скрипты

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

    #!/usr/bin/env python3

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

Скрипту можно назначить права на исполнение или режим исполнения с помощью команды chmod.

    $ chmod +x myscript.py

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

### 16.1.3. Файл интерактивного запуска

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

Этот файл исполняется только в интерактивных сессиях, а не при исполнении других файлов или при использовании `/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. Модули настройки

Python предоставляет два механизма, позволяющих настроить его: sitecustomize`и :index:`usercustomize. Чтобы увидеть, как это работает, сначала нужно узнать расположение пользовательского каталога site-package. Запустите Python и выполните код:

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

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

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

Примечания

[1]

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