> **Источник:** https://python-all.ru/3/tutorial/appendix.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

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

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

Существует два варианта интерактивного [REPL](https://python-all.ru/3/glossary.html#term-REPL). Классический базовый интерпретатор поддерживается на всех платформах с минимальными возможностями управления строками.

Начиная с Python 3.13, по умолчанию используется новая интерактивная оболочка. Она поддерживает цвет, многострочное редактирование, просмотр истории и режим вставки. Чтобы отключить цвет, см. [Управление цветом](https://python-all.ru/3/using/cmdline.html#using-on-controlling-color) для подробностей. Функциональные клавиши предоставляют некоторые дополнительные возможности. `F1` открывает интерактивный браузер справки [`pydoc`](https://python-all.ru/3/library/pydoc.html#module-pydoc). `F2` позволяет просматривать историю командной строки без вывода приглашений [\>\>\>](https://python-all.ru/3/glossary.html#term-0) и […](https://python-all.ru/3/glossary.html#term-...). `F3` включает «режим вставки», который упрощает вставку больших блоков кода. Нажмите `F3`, чтобы вернуться к обычному приглашению.

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

Если новая интерактивная оболочка не нужна, её можно отключить с помощью переменной окружения [`PYTHON_BASIC_REPL`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHON_BASIC_REPL).

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

При возникновении ошибки интерпретатор выводит сообщение об ошибке и трассировку стека. В интерактивном режиме после этого он возвращается к основному приглашению; если входные данные поступают из файла, он завершает работу с ненулевым кодом возврата после вывода трассировки стека. (Исключения, обрабатываемые предложением [`except`](https://python-all.ru/3/reference/compound_stmts.html#except) в операторе [`try`](https://python-all.ru/3/reference/compound_stmts.html#try), не считаются ошибками в данном контексте.) Некоторые ошибки являются безусловно фатальными и приводят к завершению с ненулевым кодом возврата; это относится к внутренним несоответствиям и некоторым случаям нехватки памяти. Все сообщения об ошибках записываются в стандартный поток ошибок; обычный вывод выполняемых команд записывается в стандартный поток вывода.

Ввод символа прерывания (обычно `Control`-`C` или `Delete`) на основном или вторичном приглашении отменяет ввод и возвращает к основному приглашению. [\[1\]](https://python-all.ru/3/tutorial/appendix.html#id2) Ввод прерывания во время выполнения команды вызывает исключение [`KeyboardInterrupt`](https://python-all.ru/3/library/exceptions.html#KeyboardInterrupt), которое может быть обработано оператором [`try`](https://python-all.ru/3/reference/compound_stmts.html#try).

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

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

```python
#!/usr/bin/env python3
```

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

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

```console
$ chmod +x myscript.py
```

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

### 16.1.3. Интерактивный файл запуска

При интерактивном использовании Python часто бывает удобно иметь некоторые стандартные команды, выполняемые каждый раз при запуске интерпретатора. Это можно сделать, установив переменную окружения с именем [`PYTHONSTARTUP`](https://python-all.ru/3/using/cmdline.html#envvar-PYTHONSTARTUP), указывающую на имя файла, содержащего команды запуска. Это похоже на возможность `.profile` оболочек Unix.

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

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

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

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

Теперь можно создать файл с именем `usercustomize.py` в этом каталоге и поместить в него всё что угодно. Он будет влиять на каждый запуск Python, если только он не запущен с опцией [`-s`](https://python-all.ru/3/using/cmdline.html#cmdoption-s), отключающей автоматический импорт.

sitecustomize работает так же, но обычно создаётся администратором компьютера в глобальном каталоге site-packages и импортируется до usercustomize. См. документацию модуля [`site`](https://python-all.ru/3/library/site.html#module-site) для получения подробностей.

Сноски

\[[1](https://python-all.ru/3/tutorial/appendix.html#id1)\]

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