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

---

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

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

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

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

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

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

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

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

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

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

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

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

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

При интерактивном использовании Python часто бывает удобно иметь некоторые стандартные команды, выполняемые каждый раз при запуске интерпретатора. Это можно сделать, установив переменную окружения с именем [`PYTHONSTARTUP`](https://python-all.ru/3.5/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`. Чтобы увидеть, как это работает, сначала нужно найти расположение каталога site-packages пользователя. Запустите Python и выполните следующий код:

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

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

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

Сноски

| [\[1\]](https://python-all.ru/3.5/tutorial/appendix.html#id1) | Проблема с пакетом GNU Readline может помешать этому. |
| --- | --- |
