Приложение
16.1. Интерактивный режим
16.1.1. Обработка ошибок
При возникновении ошибки интерпретатор выводит сообщение об ошибке и трассировку стека. В интерактивном режиме после этого он возвращается к основному приглашению; если ввод поступал из файла, интерпретатор завершает работу с ненулевым кодом выхода после вывода трассировки стека. (Исключения, обработанные предложением except в инструкции try, в данном контексте не считаются ошибками.) Некоторые ошибки всегда приводят к аварийному завершению с ненулевым кодом выхода; это относится к внутренним несоответствиям и некоторым случаям нехватки памяти. Все сообщения об ошибках записываются в стандартный поток ошибок; обычный вывод выполняемых команд записывается в стандартный поток вывода.
Ввод символа прерывания (обычно Control-C или Delete) у основного или вторичного приглашения отменяет ввод и возвращает к основному приглашению. [1] Ввод символа прерывания во время выполнения команды вызывает исключение KeyboardInterrupt, которое может быть обработано инструкцией try.
16.1.2. Исполняемые скрипты Python
В Unix-системах на базе BSD скрипты 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.
Этот файл считывается только в интерактивных сеансах, но не при чтении 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. Модули настройки
В Python предусмотрены два механизма настройки: sitecustomize и usercustomize. Чтобы понять, как это работает, сначала найдите расположение каталога пользовательских site-packages. Запустите Python и выполните следующий код:
>>> import site >>> site.getusersitepackages() '/home/user/.local/lib/python3.x/site-packages'
Теперь можно создать в этом каталоге файл с именем usercustomize.py и поместить в него всё, что вам нужно. Это повлияет на каждый запуск Python, если только он не запущен с параметром -s, отключающим автоматический импорт.
sitecustomize работает аналогично, но обычно создаётся администратором компьютера в глобальном каталоге site-packages и импортируется перед usercustomize. Дополнительные сведения см. в документации модуля site.
Сноски
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/tutorial/appendix.html