cmdline.md
1> **Источник:** https://python-all.ru/3.16/using/cmdline.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 1. Командная строка и окружение89Интерпретатор CPython сканирует командную строку и окружение на предмет различных настроек.1011**Особенности реализации CPython:** схемы командной строки других реализаций могут отличаться. Для получения дополнительных сведений см. [Альтернативные реализации](https://python-all.ru/3.16/reference/introduction.html#implementations).1213## 1.1. Командная строка1415При запуске Python можно указать любые из этих опций:1617```sh18python [-bBdEhiIOPqRsSuvVWx?] [-c command | -m module-name | script | - ] [args]19```2021Наиболее распространённый вариант использования – это простой запуск скрипта:2223```sh24python myscript.py25```2627### 1.1.1. Опции интерфейса2829Интерфейс интерпретатора напоминает интерфейс командной оболочки UNIX, но предоставляет дополнительные способы запуска:3031- При вызове со стандартным вводом, подключённым к tty-устройству, он выводит приглашение для команд и выполняет их до тех пор, пока не будет прочитан EOF (символ конца файла; на UNIX это можно сделать с помощью `Ctrl`-`D`, а на Windows – с помощью `Ctrl`-`Z,` `Enter`). Дополнительную информацию об интерактивном режиме см. в разделе [Интерактивный режим](https://python-all.ru/3.16/tutorial/appendix.html#tut-interac).32- При вызове с именем файла в качестве аргумента или с файлом в качестве стандартного ввода он читает и выполняет скрипт из этого файла.33- При вызове с именем каталога в качестве аргумента он читает и выполняет соответствующий скрипт из этого каталога.34- При вызове с `-c command` выполняет инструкцию(и) Python, переданную(ые) в виде *команды*. Здесь *команда* может содержать несколько инструкций, разделённых переводами строк.35- При вызове с `-m module-name` указанный модуль находится с помощью стандартного механизма импорта и выполняется как скрипт.3637В неинтерактивном режиме весь ввод анализируется до его выполнения.3839При указании опции интерфейса список параметров, обрабатываемых интерпретатором, завершается, и все последующие аргументы попадают в [`sys.argv`](https://python-all.ru/3.16/library/sys.html#sys.argv) – первый элемент (индекс ноль, `sys.argv[0]`) является строкой, указывающей на источник программы.4041#### `-c <command>`4243Выполняет код Python, указанный в *command*. *command* может содержать одну или несколько инструкций, разделённых переводами строк; начальные пробелы, как и в обычном коде модуля, имеют значение.4445Если указана эта опция, первый элемент [`sys.argv`](https://python-all.ru/3.16/library/sys.html#sys.argv) будет равен `"-c"`, а текущий каталог будет добавлен в начало [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path) (что позволяет импортировать модули из этого каталога как модули верхнего уровня).4647Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `cpython.run_command` с аргументом `command`.4849Изменено в версии 3.14: *command* автоматически очищается от начальных отступов перед выполнением.5051#### `-m <module-name>`5253Находит модуль с помощью стандартного механизма импорта и выполняет его содержимое как модуль [`__main__`](https://python-all.ru/3.16/library/__main__.html#module-__main__).5455Поскольку аргумент является именем *модуля*, не следует указывать расширение файла (`.py`). Имя модуля должно быть допустимым абсолютным именем модуля Python, но реализация может не всегда это проверять (например, может позволить использовать имя, содержащее дефис).5657Имена пакетов (включая пакеты пространств имён) также допускаются. Если вместо обычного модуля указано имя пакета, интерпретатор выполнит `<pkg>.__main__` в качестве главного модуля. Это поведение намеренно аналогично обработке каталогов и zip-файлов, которые передаются интерпретатору в качестве аргумента скрипта.5859> **Примечание**60>61> Эту опцию нельзя использовать со встроенными модулями и модулями расширения, написанными на C, поскольку у них нет файлов модулей Python. Однако её можно использовать для предварительно скомпилированных модулей, даже если исходный файл недоступен.6263Если эта опция указана, первый элемент [`sys.argv`](https://python-all.ru/3.16/library/sys.html#sys.argv) будет содержать полный путь к файлу модуля (пока файл модуля находится, первый элемент будет установлен в `"-m"`). Как и в случае с опцией [`-c`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-c), текущий каталог будет добавлен в начало [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path).6465Опция [`-I`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-I) может использоваться для запуска скрипта в изолированном режиме, когда [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path) не содержит ни текущего каталога, ни каталога site-packages пользователя. Все переменные окружения `PYTHON*` также игнорируются.6667Многие модули стандартной библиотеки содержат код, который вызывается при их выполнении в качестве скрипта. Примером может служить модуль [`timeit`](https://python-all.ru/3.16/library/timeit.html#module-timeit):6869```sh70python -m timeit -s "setup here" "benchmarked code here"71python -m timeit -h # подробнее72```7374Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `cpython.run_module` с аргументом `module-name`.7576> **См. также**77>78> **[`runpy.run_module()`](https://python-all.ru/3.16/library/runpy.html#runpy.run_module)**79>80> Эквивалентная функциональность, доступная напрямую из кода Python81>82> [**PEP 338**](https://python-all.ru/3.16/using/cmdline.html) – Выполнение модулей как сценариев8384Изменено в версии 3.1: Укажите имя пакета, чтобы запустить подмодуль `__main__`.8586Изменено в версии 3.4: также поддерживаются пространственные пакеты8788#### `-`8990Читает команды из стандартного ввода ([`sys.stdin`](https://python-all.ru/3.16/library/sys.html#sys.stdin)). Если стандартный ввод является терминалом, подразумевается [`-i`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-i).9192Если указана эта опция, первым элементом [`sys.argv`](https://python-all.ru/3.16/library/sys.html#sys.argv) будет `"-"`, а текущий каталог будет добавлен в начало [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path).9394Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `cpython.run_stdin` без аргументов.9596#### `<script>`9798Выполняет код Python, содержащийся в *скрипте*, который должен быть файловым путем (абсолютным или относительным), указывающим на файл Python, каталог с файлом `__main__.py` или ZIP-файл, содержащий файл `__main__.py`.99100Если указана эта опция, первым элементом [`sys.argv`](https://python-all.ru/3.16/library/sys.html#sys.argv) будет имя скрипта, заданное в командной строке.101102Если имя скрипта указывает непосредственно на файл Python, каталог, содержащий этот файл, добавляется в начало [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path), а сам файл выполняется как модуль [`__main__`](https://python-all.ru/3.16/library/__main__.html#module-__main__).103104Если имя скрипта ссылается на каталог или ZIP-файл, имя скрипта добавляется в начало [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path), а файл `__main__.py` в этом расположении выполняется как модуль [`__main__`](https://python-all.ru/3.16/library/__main__.html#module-__main__).105106Опция [`-I`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-I) может использоваться для запуска скрипта в изолированном режиме, когда [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path) не содержит ни каталога скрипта, ни каталога site-packages пользователя. Все переменные окружения `PYTHON*` также игнорируются.107108Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `cpython.run_file` с аргументом `filename`.109110> **См. также**111>112> **[`runpy.run_path()`](https://python-all.ru/3.16/library/runpy.html#runpy.run_path)**113>114> Эквивалентная функциональность, доступная напрямую из кода Python115116Если не указана опция интерфейса, подразумевается [`-i`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-i), `sys.argv[0]` является пустой строкой (`""`), а текущий каталог будет добавлен в начало [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path). Кроме того, автодополнение по табуляции и редактирование истории автоматически включаются, если это доступно на вашей платформе (см. [конфигурацию Readline](https://python-all.ru/3.16/library/site.html#rlcompleter-config)).117118> **См. также**119>120> [Запуск интерпретатора](https://python-all.ru/3.16/tutorial/interpreter.html#tut-invoking)121122Изменено в версии 3.4: Автоматическое включение автодополнения по табуляции и редактирования истории.123124### 1.1.2. Общие опции125126#### `-?`127128#### `-h`129130#### `--help`131132Выводит краткое описание всех опций командной строки и соответствующих переменных окружения и завершает работу.133134#### `--help-env`135136Выводит краткое описание переменных окружения, специфичных для Python, и завершает работу.137138Добавлено в версии 3.12.139140#### `--help-xoptions`141142Выводит описание специфичных для реализации опций [`-X`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X) и завершает работу.143144Добавлено в версии 3.12.145146#### `--help-all`147148Выводит полную информацию об использовании и завершает работу.149150Добавлено в версии 3.12.151152#### `-V`153154#### `--version`155156Выводит номер версии Python и завершает работу. Пример вывода:157158```text159Python 3.8.0b2+160```161162При указании дважды выводит более подробную информацию о сборке, например:163164```text165Python 3.8.0b2+ (3.8:0c076caaa8, Apr 20 2019, 21:55:00)166[GCC 6.2.0 20161005]167```168169Добавлено в версии 3.6: Опция `-VV`.170171### 1.1.3. Прочие опции172173#### `-b`174175Выдаёт предупреждение при преобразовании [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes) или [`bytearray`](https://python-all.ru/3.16/library/stdtypes.html#bytearray) в [`str`](https://python-all.ru/3.16/library/stdtypes.html#str) без указания кодировки или при сравнении `bytes` или `bytearray` с `str`, либо `bytes` с [`int`](https://python-all.ru/3.16/library/functions.html#int). Выдаёт ошибку, если опция указана дважды (`-bb`).176177Изменено в версии 3.5: Также влияет на сравнения [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes) с [`int`](https://python-all.ru/3.16/library/functions.html#int).178179Устарело с версии 3.15: Опции командной строки [`-b`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-b) и `-bb` помечены как устаревшие, и планируется сделать их недействующими (no-op) в Python 3.17. Они в основном были вспомогательными для перехода с Python 2 на 3. Начиная с Python 3.17, для этих случаев [`BytesWarning`](https://python-all.ru/3.16/library/exceptions.html#BytesWarning) не будет возбуждаться; вместо этого используйте анализатор типов.180181#### `-B`182183Если указан, Python не будет пытаться записывать файлы `.pyc` при импорте исходных модулей. См. также [`PYTHONDONTWRITEBYTECODE`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONDONTWRITEBYTECODE).184185#### `--check-hash-based-pycs default|always|never`186187Управляет проверкой файлов `.pyc` на основе хэша. См. [Инвалидация кэшированного байт-кода](https://python-all.ru/3.16/reference/import.html#pyc-invalidation). Если установлено в `default`, проверенные и непроверенные кэш-файлы байт-кода на основе хэша проверяются в соответствии с их стандартной семантикой. Если установлено в `always`, все файлы `.pyc` на основе хэша, как проверенные, так и непроверенные, проверяются на соответствие соответствующему исходному файлу. Если установлено в `never`, файлы `.pyc` на основе хэша не проверяются на соответствие соответствующим исходным файлам.188189На семантику файлов `.pyc` на основе временных меток эта опция не влияет.190191#### `-d`192193Включает отладочный вывод парсера (только для экспертов). См. также переменную окружения [`PYTHONDEBUG`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONDEBUG).194195Эта опция требует [отладочной сборки Python](https://python-all.ru/3.16/using/configure.html#debug-build), иначе она игнорируется.196197#### `-E`198199Игнорировать все переменные окружения `PYTHON*`, например [`PYTHONPATH`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONPATH) и [`PYTHONHOME`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONHOME), которые могли быть установлены.200201См. также опции [`-P`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-P) и [`-I`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-I) (изолированный режим).202203#### `-i`204205Войти в интерактивный режим после выполнения.206207Использование опции [`-i`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-i) приведёт к входу в интерактивный режим в любом из следующих случаев:208209- Когда скрипт передан первым аргументом210- Когда используется опция [`-c`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-c)211- Когда используется опция [`-m`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-m)212213Интерактивный режим запустится, даже если [`sys.stdin`](https://python-all.ru/3.16/library/sys.html#sys.stdin) не выглядит как терминал. Файл [`PYTHONSTARTUP`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONSTARTUP) не читается.214215Это может быть полезно для проверки глобальных переменных или трассировки стека, когда скрипт вызывает исключение. См. также [`PYTHONINSPECT`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONINSPECT).216217#### `-I`218219Запустить Python в изолированном режиме. Это также подразумевает опции [`-E`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-E), [`-P`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-P) и [`-s`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-s).220221В изолированном режиме [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path) не содержит ни каталог скрипта, ни каталог site-packages пользователя. Все переменные окружения `PYTHON*` также игнорируются. Могут быть наложены дополнительные ограничения для предотвращения внедрения пользователем вредоносного кода.222223Добавлено в версии 3.4.224225#### `-O`226227Удаляет операторы assert и любой код, зависящий от значения [`__debug__`](https://python-all.ru/3.16/library/constants.html#debug__). Дополняет имя файла для скомпилированных ([байт-код](https://python-all.ru/3.16/glossary.html#term-bytecode)) файлов, добавляя `.opt-1` перед расширением `.pyc` (см. [**PEP 488**](https://python-all.ru/3.16/using/cmdline.html)). См. также [`PYTHONOPTIMIZE`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONOPTIMIZE).228229Изменено в версии 3.5: Изменяет имена файлов `.pyc` в соответствии с [**PEP 488**](https://python-all.ru/3.16/using/cmdline.html).230231#### `-OO`232233Выполняет [`-O`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-O), а также отбрасывает строки документации. Дополняет имя файла для скомпилированных ([байт-код](https://python-all.ru/3.16/glossary.html#term-bytecode)) файлов, добавляя `.opt-2` перед расширением `.pyc` (см. [**PEP 488**](https://python-all.ru/3.16/using/cmdline.html)).234235Изменено в версии 3.5: Изменяет имена файлов `.pyc` в соответствии с [**PEP 488**](https://python-all.ru/3.16/using/cmdline.html).236237#### `-P`238239Не добавлять потенциально небезопасный путь к [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path):240241- Командная строка `python -m module`: не добавлять текущую рабочую директорию.242- Командная строка `python script.py`: не добавлять каталог скрипта. Если это символическая ссылка, разрешать символические ссылки.243- Командные строки `python -c code` и `python` (REPL) не добавляют в начало пустую строку, что означает текущий рабочий каталог.244245См. также переменную окружения [`PYTHONSAFEPATH`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONSAFEPATH), а также опции [`-E`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-E) и [`-I`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-I) (изолированный режим).246247Добавлено в версии 3.12.248249#### `-q`250251Не выводить сообщения об авторских правах и версии, даже в интерактивном режиме.252253Добавлено в версии 3.2.254255#### `-R`256257Включает рандомизацию хешей. Эта опция действует, только если переменная окружения [`PYTHONHASHSEED`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONHASHSEED) имеет значение, отличное от `random`, поскольку по умолчанию рандомизация хешей включена.258259В предыдущих версиях Python эта опция включала рандомизацию хешей, так что значения [`__hash__()`](https://python-all.ru/3.16/reference/datamodel.html#object.__hash__) объектов str и bytes «солились» непредсказуемым случайным значением. Хотя они остаются постоянными в рамках одного процесса Python, они не являются предсказуемыми при повторных запусках Python.260261Рандомизация хешей предназначена для защиты от отказа в обслуживании, вызванного специально подобранными входными данными, которые используют наихудшую производительность при создании словаря – сложность *O*(*n*2). Подробнее см. [https://ocert.org/advisories/ocert-2011-003.html](https://python-all.ru/3.16/using/cmdline.html).262263[`PYTHONHASHSEED`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONHASHSEED) позволяет задать фиксированное значение для секрета начального значения хеша.264265Добавлено в версии 3.2.3.266267Изменено в версии 3.7: Опция больше не игнорируется.268269#### `-s`270271Не добавляет [`user site-packages directory`](https://python-all.ru/3.16/library/site.html#site.USER_SITE) в [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path).272273См. также [`PYTHONNOUSERSITE`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONNOUSERSITE).274275> **См. также**276>277> [**PEP 370**](https://python-all.ru/3.16/using/cmdline.html) – Каталог site-packages для каждого пользователя278279#### `-S`280281Отключает импорт модуля [`site`](https://python-all.ru/3.16/library/site.html#module-site) и связанные с ним site-зависимые манипуляции с [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path). Также отключает эти манипуляции, если `site` явно импортирован позже (для их выполнения следует вызвать [`site.main()`](https://python-all.ru/3.16/library/site.html#site.main)).282283#### `-u`284285Принудительно отключает буферизацию для потоков stdout и stderr. Эта опция не влияет на поток stdin.286287См. также [`PYTHONUNBUFFERED`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONUNBUFFERED).288289Изменено в версии 3.7: Текстовый слой потоков stdout и stderr теперь не буферизуется.290291#### `-v`292293Выводить сообщение каждый раз, когда инициализируется модуль, с указанием места (имя файла или встроенный модуль), откуда он загружается. При указании дважды (`-vv`) выводить сообщение для каждого файла, который проверяется при поиске модуля. Также предоставляет информацию об очистке модуля при завершении.294295Изменено в версии 3.10: Модуль [`site`](https://python-all.ru/3.16/library/site.html#module-site) теперь сообщает о специфичных для сайта путях и обрабатываемых файлах `.pth`.296297См. также [`PYTHONVERBOSE`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONVERBOSE).298299#### `-W arg`300301Управление предупреждениями. Механизм предупреждений Python по умолчанию выводит предупреждающие сообщения в [`sys.stderr`](https://python-all.ru/3.16/library/sys.html#sys.stderr).302303Простейшие настройки применяют определённое действие безусловно ко всем предупреждениям, выдаваемым процессом (даже к тем, которые в противном случае игнорируются по умолчанию):304305```sh306-Wdefault # Предупреждать один раз на место вызова307-Werror # Преобразовывать в исключения308-Walways # Предупреждать каждый раз309-Wall # То же, что и -Walways310-Wmodule # Предупреждать один раз на вызывающий модуль311-Wonce # Предупреждать один раз на процесс Python312-Wignore # Никогда не предупреждать313```314315Названия действий можно сокращать по желанию, и интерпретатор преобразует их в соответствующее полное имя. Например, `-Wi` – то же самое, что `-Wignore`.316317Полная форма аргумента:318319```sh320action:message:category:module:lineno321```322323Пустые поля соответствуют всем значениям; конечные пустые поля можно опускать. Например, `-W ignore::DeprecationWarning` игнорирует все предупреждения DeprecationWarning.324325Поле *action* работает так, как описано выше, но применяется только к предупреждениям, соответствующим остальным полям.326327Поле *сообщение* должно совпадать с началом предупреждения; это сравнение нечувствительно к регистру. Если оно начинается и заканчивается косой чертой (`/`), то задаётся регулярное выражение, иначе – литеральная строка.328329Поле *category* соответствует категории предупреждения (например: `DeprecationWarning`). Это должно быть имя класса; проверка определяет, является ли фактическая категория предупреждения подклассом указанной категории.330331Поле *модуль* совпадает с (полным) именем модуля; это сравнение чувствительно к регистру. Если оно начинается и заканчивается косой чертой (`/`), то задаётся регулярное выражение, которому должно соответствовать начало полного имени модуля, иначе – литеральная строка, которой полное имя модуля должно быть равно.332333Поле *lineno* соответствует номеру строки; ноль соответствует всем номерам строк и поэтому эквивалентен отсутствующему номеру строки.334335Можно указать несколько опций [`-W`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-W); если предупреждение соответствует более чем одной опции, выполняется действие последней подходящей опции. Некорректные опции `-W` игнорируются (однако при выдаче первого предупреждения выводится сообщение о некорректных опциях).336337Предупреждениями также можно управлять с помощью переменной окружения [`PYTHONWARNINGS`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONWARNINGS) и из программы на Python с использованием модуля [`warnings`](https://python-all.ru/3.16/library/warnings.html#module-warnings). Например, функция [`warnings.filterwarnings()`](https://python-all.ru/3.16/library/warnings.html#warnings.filterwarnings) позволяет применить регулярное выражение к сообщению предупреждения.338339См. [Фильтр предупреждений](https://python-all.ru/3.16/library/warnings.html#warning-filter) и [Описание фильтров предупреждений](https://python-all.ru/3.16/library/warnings.html#describing-warning-filters) для получения дополнительных сведений.340341Изменено в версии 3.15: Добавлена поддержка регулярных выражений для *message* и *module*.342343#### `-x`344345Пропускает первую строку исходного файла, позволяя использовать не-юниксовые формы `#!cmd`. Это предназначено только для специфического хака DOS.346347#### `-X`348349Зарезервировано для различных опций, специфичных для реализации. В настоящее время CPython определяет следующие возможные значения:350351- `-X faulthandler` для включения [`faulthandler`](https://python-all.ru/3.16/library/faulthandler.html#module-faulthandler). См. также [`PYTHONFAULTHANDLER`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONFAULTHANDLER).352353 Добавлено в версии 3.3.354- `-X showrefcount` выводит общее количество ссылок и количество использованных блоков памяти при завершении программы или после каждого оператора в интерактивном интерпретаторе. Это работает только на [отладочных сборках](https://python-all.ru/3.16/using/configure.html#debug-build).355356 Добавлено в версии 3.4.357- `-X tracemalloc` для начала трассировки выделений памяти Python с использованием модуля [`tracemalloc`](https://python-all.ru/3.16/library/tracemalloc.html#module-tracemalloc). По умолчанию в трассировочном стеке сохраняется только последний кадр. Используйте `-X tracemalloc=NFRAME` для начала трассировки с ограничением на *NFRAME* кадров. См. [`tracemalloc.start()`](https://python-all.ru/3.16/library/tracemalloc.html#tracemalloc.start) и [`PYTHONTRACEMALLOC`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONTRACEMALLOC) для получения дополнительной информации.358359 Добавлено в версии 3.4.360- `-X int_max_str_digits` настраивает [ограничение длины преобразования целых чисел в строки](https://python-all.ru/3.16/library/stdtypes.html#int-max-str-digits). См. также [`PYTHONINTMAXSTRDIGITS`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONINTMAXSTRDIGITS).361362 Добавлено в версии 3.12.363- `-X importtime` для отображения времени каждого импорта. Показывает имя модуля, общее время (включая вложенные импорты) и собственное время (без вложенных импортов). Обратите внимание, что вывод может быть нарушен в многопоточных приложениях. Типичное использование: `python -X importtime -c 'import asyncio'`.364365 `-X importtime=2` включает дополнительный вывод, указывающий, когда импортированный модуль уже был загружен. В таких случаях строка `cached` будет выведена в обеих колонках времени.366367 См. также [`PYTHONPROFILEIMPORTTIME`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONPROFILEIMPORTTIME).368369 Добавлено в версии 3.7.370371 Изменено в версии 3.14: Добавлен `-X importtime=2` для трассировки импорта уже загруженных модулей, а также зарезервированы значения, отличные от `1` и `2`, для будущего использования.372- `-X dev`: включает [режим разработки Python](https://python-all.ru/3.16/library/devmode.html#devmode), вводя дополнительные проверки во время выполнения, которые слишком дороги для включения по умолчанию. См. также [`PYTHONDEVMODE`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONDEVMODE).373374 Добавлено в версии 3.7.375- `-X utf8` включает [режим UTF-8 Python](https://python-all.ru/3.16/library/os.html#utf8-mode). `-X utf8=0` явно отключает [режим UTF-8 Python](https://python-all.ru/3.16/library/os.html#utf8-mode) (даже если в противном случае он был бы активирован автоматически). См. также [`PYTHONUTF8`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONUTF8).376377 Добавлено в версии 3.7.378- `-X pycache_prefix=PATH` включает запись файлов `.pyc` в параллельное дерево с корнем в указанном каталоге, а не в дерево кода. См. также [`PYTHONPYCACHEPREFIX`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONPYCACHEPREFIX).379380 Добавлено в версии 3.8.381- `-X warn_default_encoding` выдает [`EncodingWarning`](https://python-all.ru/3.16/library/exceptions.html#EncodingWarning), когда для открытия файлов используется кодировка по умолчанию, зависящая от локали. См. также [`PYTHONWARNDEFAULTENCODING`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONWARNDEFAULTENCODING).382383 Добавлено в версии 3.10.384- `-X no_debug_ranges` отключает включение таблиц, сопоставляющих дополнительную информацию о местоположении (конечная строка, начальное смещение столбца и конечное смещение столбца) каждой инструкции в объектах кода. Это полезно, когда нужны меньшие объекты кода и файлы pyc, а также для подавления дополнительных визуальных индикаторов местоположения при отображении трассировок интерпретатором. См. также [`PYTHONNODEBUGRANGES`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONNODEBUGRANGES).385386 Добавлено в версии 3.12.387- `-X frozen_modules` определяет, игнорируются ли замороженные модули механизмом импорта. Значение `on` означает, что они импортируются, а `off` – что они игнорируются. По умолчанию `on`, если это установленный Python (обычный случай). Если он находится в разработке (запуск из дерева исходников), то по умолчанию `off`. Обратите внимание, что замороженные модули `importlib_bootstrap` и `importlib_bootstrap_external` всегда используются, даже если этот флаг установлен в `off`. См. также [`PYTHON_FROZEN_MODULES`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHON_FROZEN_MODULES).388389 Добавлено в версии 3.12.390- `-X perf` включает поддержку профилировщика `perf` в Linux. Когда эта опция задана, профилировщик `perf` сможет сообщать о вызовах Python. Эта опция доступна только на некоторых платформах и ничего не делает, если не поддерживается в текущей системе. Значение по умолчанию – «off». См. также [`PYTHONPERFSUPPORT`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONPERFSUPPORT) и [поддержка Python для профилировщиков, совместимых с perf map](https://python-all.ru/3.16/howto/perf_profiling.html#perf-profiling).391392 Добавлено в версии 3.12.393- `-X perf_jit` включает поддержку профилировщика `perf` в Linux с поддержкой DWARF. Когда эта опция задана, профилировщик `perf` сможет сообщать о вызовах Python с использованием информации DWARF. Эта опция доступна только на некоторых платформах и ничего не делает, если не поддерживается в текущей системе. Значение по умолчанию – «off». См. также [`PYTHON_PERF_JIT_SUPPORT`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHON_PERF_JIT_SUPPORT) и [поддержка Python для профилировщиков, совместимых с perf map](https://python-all.ru/3.16/howto/perf_profiling.html#perf-profiling).394395 Добавлено в версии 3.13.396- `-X disable_remote_debug` отключает поддержку удаленной отладки, как описано в [**PEP 768**](https://python-all.ru/3.16/using/cmdline.html). Это включает как возможность запланировать выполнение кода в другом процессе, так и возможность получать код для выполнения в текущем процессе.397398 Эта опция доступна только на некоторых платформах и ничего не делает, если не поддерживается текущей системой. См. также [`PYTHON_DISABLE_REMOTE_DEBUG`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHON_DISABLE_REMOTE_DEBUG) и [**PEP 768**](https://python-all.ru/3.16/using/cmdline.html).399400 Добавлено в версии 3.14.401- `-X cpu_count=n` переопределяет [`os.cpu_count()`](https://python-all.ru/3.16/library/os.html#os.cpu_count), [`os.process_cpu_count()`](https://python-all.ru/3.16/library/os.html#os.process_cpu_count) и [`multiprocessing.cpu_count()`](https://python-all.ru/3.16/library/multiprocessing.html#multiprocessing.cpu_count). *n* должно быть больше или равно 1. Эта опция может быть полезна пользователям, которым нужно ограничить ресурсы ЦП контейнерной системы. См. также [`PYTHON_CPU_COUNT`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHON_CPU_COUNT). Если *n* равно `default`, ничего не переопределяется.402403 Добавлено в версии 3.13.404- `-X presite=module` или `-X presite=module:func` указывает точку входа, которая должна быть выполнена до того, как модуль [`site`](https://python-all.ru/3.16/library/site.html#module-site) будет выполнен и до того, как модуль [`__main__`](https://python-all.ru/3.16/library/__main__.html#module-__main__) существует. Поэтому импортированный модуль не является `__main__`. Это можно использовать для выполнения кода на ранних этапах инициализации Python. Для существования этой опции Python должен быть [собран в режиме отладки](https://python-all.ru/3.16/using/configure.html#debug-build). См. также [`PYTHON_PRESITE`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHON_PRESITE).405406 Изменено в версии 3.15: Дополнительно принимается формат точки входа `module:func`.407408 Добавлено в версии 3.13.409- `-X gil=0,1` принудительно отключает или включает GIL соответственно. Установка в `0` доступна только в сборках, настроенных с [`--disable-gil`](https://python-all.ru/3.16/using/configure.html#cmdoption-disable-gil). См. также [`PYTHON_GIL`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHON_GIL) и [Free-threaded CPython](https://python-all.ru/3.16/whatsnew/3.13.html#whatsnew313-free-threaded-cpython).410411 Добавлено в версии 3.13.412- `-X thread_inherit_context=0,1` заставляет [`Thread`](https://python-all.ru/3.16/library/threading.html#threading.Thread) по умолчанию использовать копию контекста вызывающего `Thread.start()` при запуске. В противном случае потоки будут запускаться с пустым контекстом. Если не задано, значение этой опции по умолчанию равно `1` в free-threaded сборках и `0` в остальных случаях. См. также [`PYTHON_THREAD_INHERIT_CONTEXT`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHON_THREAD_INHERIT_CONTEXT).413414 Добавлено в версии 3.14.415- `-X context_aware_warnings=0,1` заставляет контекстный менеджер [`warnings.catch_warnings`](https://python-all.ru/3.16/library/warnings.html#warnings.catch_warnings) использовать [`ContextVar`](https://python-all.ru/3.16/library/contextvars.html#contextvars.ContextVar) для хранения состояния фильтра предупреждений. Если не задано, значение этой опции по умолчанию равно `1` в free-threaded сборках и `0` в остальных случаях. См. также [`PYTHON_CONTEXT_AWARE_WARNINGS`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHON_CONTEXT_AWARE_WARNINGS).416417 Добавлено в версии 3.14.418- `-X pathconfig_warnings=0,1` если true (`1`), то [инициализация пути поиска модулей sys.path](https://python-all.ru/3.16/library/sys_path_init.html#sys-path-init) может записывать предупреждения в stderr. Если false (`0`) – подавлять эти предупреждения. По умолчанию установлено в true. См. также [`PYTHON_PATHCONFIG_WARNINGS`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHON_PATHCONFIG_WARNINGS).419420 Добавлено в версии 3.15.421- `-X tlbc=0,1` включает (1, по умолчанию) или отключает (0) байткод, локальный для потока, в сборках, настроенных с [`--disable-gil`](https://python-all.ru/3.16/using/configure.html#cmdoption-disable-gil). При отключении также отключается специализирующий интерпретатор. См. также [`PYTHON_TLBC`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHON_TLBC).422423 Добавлено в версии 3.14.424- `-X lazy_imports=all,normal` управляет поведением ленивого импорта. `all` делает все импорты ленивыми по умолчанию, а `normal` (по умолчанию) учитывает ключевое слово `lazy` в исходном коде. См. также [`PYTHON_LAZY_IMPORTS`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHON_LAZY_IMPORTS).425426 Добавлено в версии 3.15.427428Он также позволяет передавать произвольные значения и извлекать их через словарь [`sys._xoptions`](https://python-all.ru/3.16/library/sys.html#sys._xoptions).429430Добавлено в версии 3.2.431432Изменено в версии 3.9: Удалена опция `-X showalloccount`.433434Изменено в версии 3.10: Удалена опция `-X oldparser`.435436Удалено в версии 3.14: `-J` больше не зарезервирован для использования [Jython](https://python-all.ru/3.16/using/cmdline.html) и теперь не имеет специального значения.437438### 1.1.4. Управление цветом439440Интерпретатор Python по умолчанию настроен использовать цвета для выделения вывода в определённых ситуациях, например при отображении трассировок. Это поведение можно контролировать с помощью настройки различных переменных окружения.441442Установка переменной окружения `TERM` в значение `dumb` отключит цвет.443444Если установлена переменная окружения [`FORCE_COLOR`](https://python-all.ru/3.16/using/cmdline.html), цвет будет включён независимо от значения TERM. Это полезно в системах CI, которые не являются терминалами, но всё же могут отображать ANSI-escape-последовательности.445446Если установлена переменная окружения [`NO_COLOR`](https://python-all.ru/3.16/using/cmdline.html), Python отключит все цвета в выводе. Она имеет приоритет над `FORCE_COLOR`.447448Все эти переменные окружения также используются другими инструментами для управления цветным выводом. Чтобы управлять цветным выводом только в интерпретаторе Python, можно использовать переменную окружения [`PYTHON_COLORS`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHON_COLORS). Эта переменная имеет приоритет над `NO_COLOR`, которая, в свою очередь, имеет приоритет над `FORCE_COLOR`.449450## 1.2. Переменные окружения451452Эти переменные окружения влияют на поведение Python, они обрабатываются до параметров командной строки, кроме -E или -I. Принято, что параметры командной строки переопределяют переменные окружения в случае конфликта.453454#### `PYTHONHOME`455456Изменяет расположение стандартных библиотек Python. По умолчанию библиотеки ищутся в `prefix/lib/pythonversion` и `exec_prefix/lib/pythonversion`, где `prefix` и `exec_prefix` – это каталоги, зависящие от установки; оба по умолчанию имеют значение `/usr/local`.457458Когда [`PYTHONHOME`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONHOME) установлен в один каталог, его значение заменяет оба `prefix` и `exec_prefix`. Чтобы указать для них разные значения, установите `PYTHONHOME` в `prefix:exec_prefix`.459460#### `PYTHONPATH`461462Дополняет путь поиска модулей по умолчанию. Формат такой же, как у `PATH` оболочки: один или несколько путей к каталогам, разделённых [`os.pathsep`](https://python-all.ru/3.16/library/os.html#os.pathsep) (например, двоеточиями в Unix или точкой с запятой в Windows). Несуществующие каталоги игнорируются без предупреждения.463464В дополнение к обычным каталогам, отдельные записи [`PYTHONPATH`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONPATH) могут ссылаться на zip-файлы, содержащие чистые модули Python (в исходной или скомпилированной форме). Модули расширений не могут быть импортированы из zip-файлов.465466Путь поиска по умолчанию зависит от установки, но обычно начинается с `prefix/lib/pythonversion` (см. [`PYTHONHOME`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONHOME) выше). Он *всегда* добавляется к [`PYTHONPATH`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONPATH).467468Дополнительный каталог будет вставлен в путь поиска перед [`PYTHONPATH`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONPATH), как описано выше в разделе [Параметры интерфейса](https://python-all.ru/3.16/using/cmdline.html#using-on-interface-options). Путь поиска можно изменять из программы Python как переменную [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path).469470#### `PYTHONSAFEPATH`471472Если эта переменная установлена в непустую строку, потенциально небезопасный путь не будет добавляться в начало [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path): подробнее см. параметр [`-P`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-P).473474Добавлено в версии 3.12.475476#### `PYTHONPLATLIBDIR`477478Если эта переменная установлена в непустую строку, она переопределяет значение [`sys.platlibdir`](https://python-all.ru/3.16/library/sys.html#sys.platlibdir).479480Добавлено в версии 3.9.481482#### `PYTHONSTARTUP`483484Если это имя читаемого файла, команды Python из этого файла выполняются перед отображением первого приглашения в интерактивном режиме. Файл выполняется в том же пространстве имён, что и интерактивные команды, поэтому определённые или импортированные в нём объекты могут использоваться без уточнения в интерактивном сеансе. Также в этом файле можно изменить приглашения [`sys.ps1`](https://python-all.ru/3.16/library/sys.html#sys.ps1) и [`sys.ps2`](https://python-all.ru/3.16/library/sys.html#sys.ps2) и хук [`sys.__interactivehook__`](https://python-all.ru/3.16/library/sys.html#sys.__interactivehook__).485486Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `cpython.run_startup` с именем файла в качестве аргумента при вызове во время запуска.487488#### `PYTHONOPTIMIZE`489490Если эта переменная установлена в непустую строку, это эквивалентно указанию опции [`-O`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-O). Если установлено целое число, это эквивалентно указанию `-O` несколько раз.491492#### `PYTHONBREAKPOINT`493494Если эта переменная установлена, она задаёт вызываемый объект в нотации с точками. Модуль, содержащий вызываемый объект, будет импортирован, а затем вызываемый объект будет запущен реализацией по умолчанию [`sys.breakpointhook()`](https://python-all.ru/3.16/library/sys.html#sys.breakpointhook), которая сама вызывается встроенной [`breakpoint()`](https://python-all.ru/3.16/library/functions.html#breakpoint). Если не установлена или установлена в пустую строку, это эквивалентно значению "pdb.set\_trace". Установка в строку "0" заставляет реализацию по умолчанию `sys.breakpointhook()` ничего не делать и немедленно вернуться.495496Добавлено в версии 3.7.497498#### `PYTHONDEBUG`499500Если эта переменная установлена в непустую строку, это эквивалентно указанию опции [`-d`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-d). Если установлено целое число, это эквивалентно указанию `-d` несколько раз.501502Эта переменная окружения требует [отладочную сборку Python](https://python-all.ru/3.16/using/configure.html#debug-build), в противном случае она игнорируется.503504#### `PYTHONINSPECT`505506Если эта переменная установлена в непустую строку, это эквивалентно указанию опции [`-i`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-i).507508Эта переменная также может быть изменена кодом Python с помощью [`os.environ`](https://python-all.ru/3.16/library/os.html#os.environ), чтобы принудительно включить режим инспектирования при завершении программы.509510Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `cpython.run_stdin` без аргументов.511512Изменено в версии 3.12.5: (также 3.11.10, 3.10.15, 3.9.20 и 3.8.20) Генерирует аудируемые события.513514Изменено в версии 3.13: По возможности использует PyREPL, в этом случае тоже выполняется [`PYTHONSTARTUP`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONSTARTUP). Генерирует аудируемые события.515516#### `PYTHONUNBUFFERED`517518Если эта переменная установлена в непустую строку, это эквивалентно указанию опции [`-u`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-u).519520#### `PYTHONVERBOSE`521522Если эта переменная установлена в непустую строку, это эквивалентно указанию опции [`-v`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-v). Если установлено целое число, это эквивалентно указанию `-v` несколько раз.523524#### `PYTHONCASEOK`525526Если эта переменная установлена, Python игнорирует регистр в операторах [`import`](https://python-all.ru/3.16/reference/simple_stmts.html#import). Это работает только в Windows и macOS.527528#### `PYTHONDONTWRITEBYTECODE`529530Если эта переменная установлена в непустую строку, Python не будет пытаться записывать файлы `.pyc` при импорте исходных модулей. Это эквивалентно указанию опции [`-B`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-B).531532#### `PYTHONPYCACHEPREFIX`533534Если эта переменная установлена, Python будет записывать файлы `.pyc` в зеркальное дерево каталогов по указанному пути, вместо каталогов `__pycache__` внутри исходного дерева. Это эквивалентно указанию опции [`-X`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X) `pycache_prefix=PATH`.535536Добавлено в версии 3.8.537538#### `PYTHONHASHSEED`539540Если эта переменная не установлена или установлена в `random`, используется случайное значение для инициализации хешей объектов str и bytes.541542Если [`PYTHONHASHSEED`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONHASHSEED) установлено в целое число, оно используется как фиксированное начальное значение для генерации hash() для типов, охваченных рандомизацией хешей.543544Его цель – обеспечить воспроизводимое хеширование, например, для самотестирования самого интерпретатора, или чтобы позволить кластеру процессов Python обмениваться значениями хешей.545546Целое число должно быть десятичным числом в диапазоне \[0, 4294967295\]. Указание значения 0 отключит рандомизацию хешей.547548Добавлено в версии 3.2.3.549550#### `PYTHONINTMAXSTRDIGITS`551552Если эта переменная установлена в целое число, она используется для настройки глобального [ограничения длины преобразования целого числа в строку](https://python-all.ru/3.16/library/stdtypes.html#int-max-str-digits).553554Добавлено в версии 3.12.555556#### `PYTHONIOENCODING`557558Если эта переменная установлена до запуска интерпретатора, она переопределяет кодировку, используемую для stdin/stdout/stderr, в синтаксисе `encodingname:errorhandler`. Обе части `encodingname` и `:errorhandler` необязательны и имеют то же значение, что и в [`str.encode()`](https://python-all.ru/3.16/library/stdtypes.html#str.encode).559560Для stderr часть `:errorhandler` игнорируется; обработчик всегда будет `'backslashreplace'`.561562Изменено в версии 3.4: Часть `encodingname` теперь необязательна.563564Изменено в версии 3.6: В Windows кодировка, указанная этой переменной, игнорируется для интерактивных буферов консоли, если также не указана [`PYTHONLEGACYWINDOWSSTDIO`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONLEGACYWINDOWSSTDIO). Файлы и каналы, перенаправленные через стандартные потоки, не затрагиваются.565566#### `PYTHONNOUSERSITE`567568Это эквивалентно опции [`-s`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-s). Если это установлено, Python не будет добавлять [`user site-packages directory`](https://python-all.ru/3.16/library/site.html#site.USER_SITE) в [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path).569570> **См. также**571>572> [**PEP 370**](https://python-all.ru/3.16/using/cmdline.html) – Каталог site-packages для каждого пользователя573574#### `PYTHONUSERBASE`575576Определяет [`user base directory`](https://python-all.ru/3.16/library/site.html#site.USER_BASE), который используется для вычисления пути к [`user site-packages directory`](https://python-all.ru/3.16/library/site.html#site.USER_SITE) и [путей установки](https://python-all.ru/3.16/library/sysconfig.html#sysconfig-user-scheme) для `python -m pip install --user`.577578Чтобы отключить пользовательские site-packages, см. [`PYTHONNOUSERSITE`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONNOUSERSITE) или опцию [`-s`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-s).579580> **См. также**581>582> [**PEP 370**](https://python-all.ru/3.16/using/cmdline.html) – Каталог site-packages для каждого пользователя583584#### `PYTHONEXECUTABLE`585586Если эта переменная окружения установлена, `sys.argv[0]` будет установлено в её значение вместо значения, полученного через C runtime. Работает только на macOS.587588#### `PYTHONWARNINGS`589590Это эквивалентно опции [`-W`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-W). Если установлено в строку, разделённую запятыми, это эквивалентно многократному указанию `-W`, при этом фильтры, находящиеся позже в списке, имеют приоритет над теми, что раньше.591592Простейшие настройки применяют определённое действие безусловно ко всем предупреждениям, выдаваемым процессом (даже к тем, которые в противном случае игнорируются по умолчанию):593594```sh595PYTHONWARNINGS=default # Предупреждать один раз на место вызова596PYTHONWARNINGS=error # Преобразовывать в исключения597PYTHONWARNINGS=always # Предупреждать каждый раз598PYTHONWARNINGS=all # То же, что и PYTHONWARNINGS=always599PYTHONWARNINGS=module # Предупреждать один раз на вызывающий модуль600PYTHONWARNINGS=once # Предупреждать один раз на процесс Python601PYTHONWARNINGS=ignore # Никогда не предупреждать602```603604См. [Фильтр предупреждений](https://python-all.ru/3.16/library/warnings.html#warning-filter) и [Описание фильтров предупреждений](https://python-all.ru/3.16/library/warnings.html#describing-warning-filters) для получения дополнительных сведений.605606Изменено в версии 3.15: Добавлена поддержка регулярных выражений для *message* и *module*.607608#### `PYTHONFAULTHANDLER`609610Если эта переменная окружения установлена в непустую строку, при запуске вызывается [`faulthandler.enable()`](https://python-all.ru/3.16/library/faulthandler.html#faulthandler.enable): устанавливается обработчик сигналов [`SIGSEGV`](https://python-all.ru/3.16/library/signal.html#signal.SIGSEGV), [`SIGFPE`](https://python-all.ru/3.16/library/signal.html#signal.SIGFPE), [`SIGABRT`](https://python-all.ru/3.16/library/signal.html#signal.SIGABRT), [`SIGBUS`](https://python-all.ru/3.16/library/signal.html#signal.SIGBUS) и [`SIGILL`](https://python-all.ru/3.16/library/signal.html#signal.SIGILL) для вывода трассировки Python. Это эквивалентно параметру [`-X`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X) `faulthandler`.611612Добавлено в версии 3.3.613614#### `PYTHONTRACEMALLOC`615616Если эта переменная окружения установлена в непустую строку, запускается трассировка выделений памяти Python с помощью модуля [`tracemalloc`](https://python-all.ru/3.16/library/tracemalloc.html#module-tracemalloc). Значение переменной – максимальное количество фреймов, сохраняемых в трассировке стека. Например, `PYTHONTRACEMALLOC=1` сохраняет только самый последний фрейм. См. функцию [`tracemalloc.start()`](https://python-all.ru/3.16/library/tracemalloc.html#tracemalloc.start) для получения дополнительной информации. Это эквивалентно установке параметра [`-X`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X) `tracemalloc`.617618Добавлено в версии 3.4.619620#### `PYTHONPROFILEIMPORTTIME`621622Если эта переменная окружения установлена в `1`, Python будет показывать, сколько времени занимает каждый импорт. Если установлена в `2`, Python будет включать вывод для уже загруженных модулей. Это эквивалентно установке параметра [`-X`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X) `importtime`.623624Добавлено в версии 3.7.625626Изменено в версии 3.14: Добавлено `PYTHONPROFILEIMPORTTIME=2` для трассировки импорта уже загруженных модулей.627628#### `PYTHONASYNCIODEBUG`629630Если эта переменная окружения установлена в непустую строку, включает [режим отладки](https://python-all.ru/3.16/library/asyncio-dev.html#asyncio-debug-mode) модуля [`asyncio`](https://python-all.ru/3.16/library/asyncio.html#module-asyncio).631632Добавлено в версии 3.4.633634#### `PYTHONMALLOC`635636Устанавливает аллокаторы памяти Python и/или добавляет отладочные хуки.637638Устанавливает семейство аллокаторов памяти, используемых Python:639640- `default`: использовать [аллокаторы памяти по умолчанию](https://python-all.ru/3.16/c-api/memory.html#default-memory-allocators).641- `malloc`: использовать функцию `malloc()` библиотеки C для всех областей ([`PYMEM_DOMAIN_RAW`](https://python-all.ru/3.16/c-api/memory.html#c.PYMEM_DOMAIN_RAW), [`PYMEM_DOMAIN_MEM`](https://python-all.ru/3.16/c-api/memory.html#c.PYMEM_DOMAIN_MEM), [`PYMEM_DOMAIN_OBJ`](https://python-all.ru/3.16/c-api/memory.html#c.PYMEM_DOMAIN_OBJ)).642- `pymalloc`: использовать [аллокатор pymalloc](https://python-all.ru/3.16/c-api/memory.html#pymalloc) для областей [`PYMEM_DOMAIN_MEM`](https://python-all.ru/3.16/c-api/memory.html#c.PYMEM_DOMAIN_MEM) и [`PYMEM_DOMAIN_OBJ`](https://python-all.ru/3.16/c-api/memory.html#c.PYMEM_DOMAIN_OBJ), а функцию `malloc()` – для области [`PYMEM_DOMAIN_RAW`](https://python-all.ru/3.16/c-api/memory.html#c.PYMEM_DOMAIN_RAW).643- `mimalloc`: использовать [аллокатор mimalloc](https://python-all.ru/3.16/c-api/memory.html#mimalloc) для областей [`PYMEM_DOMAIN_MEM`](https://python-all.ru/3.16/c-api/memory.html#c.PYMEM_DOMAIN_MEM) и [`PYMEM_DOMAIN_OBJ`](https://python-all.ru/3.16/c-api/memory.html#c.PYMEM_DOMAIN_OBJ), а функцию `malloc()` – для области [`PYMEM_DOMAIN_RAW`](https://python-all.ru/3.16/c-api/memory.html#c.PYMEM_DOMAIN_RAW).644645Установка [отладочных хуков](https://python-all.ru/3.16/c-api/memory.html#pymem-debug-hooks):646647- `debug`: установить отладочные хуки поверх [аллокаторов памяти по умолчанию](https://python-all.ru/3.16/c-api/memory.html#default-memory-allocators).648- `malloc_debug`: то же, что `malloc`, но также устанавливает отладочные хуки.649- `pymalloc_debug`: то же, что `pymalloc`, но также устанавливает отладочные хуки.650- `mimalloc_debug`: то же, что `mimalloc`, но также устанавливает отладочные хуки.651652> **Примечание**653>654> В сборке с [свободной многопоточностью (free-threaded)](https://python-all.ru/3.16/glossary.html#term-free-threading) значения `malloc`, `malloc_debug`, `pymalloc` и `pymalloc_debug` не поддерживаются. Принимаются только `default`, `debug`, `mimalloc` и `mimalloc_debug`.655656Добавлено в версии 3.6.657658Изменено в версии 3.7: Добавлен аллокатор `"default"`.659660#### `PYTHONMALLOCSTATS`661662Если установлена в непустую строку, Python будет выводить статистику [аллокатора памяти pymalloc](https://python-all.ru/3.16/c-api/memory.html#pymalloc) или [аллокатора памяти mimalloc](https://python-all.ru/3.16/c-api/memory.html#mimalloc) (в зависимости от того, какой используется) каждый раз при создании новой арены объектов и при завершении работы.663664Эта переменная игнорируется, если переменная окружения [`PYTHONMALLOC`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONMALLOC) используется для принудительного использования аллокатора `malloc()` библиотеки C, или если Python сконфигурирован без поддержки `pymalloc` и `mimalloc`.665666Изменено в версии 3.6: Теперь эту переменную можно также использовать в Python, скомпилированном в режиме релиза. Теперь она не действует, если установлена в пустую строку.667668#### `PYTHON_PYMALLOC_HUGEPAGES`669670Если установлено в ненулевое целое, включает поддержку больших страниц для арен [pymalloc](https://python-all.ru/3.16/c-api/memory.html#pymalloc). Установите в `0` или не задавайте, чтобы отключить. Python должен быть скомпилирован с [`--with-pymalloc-hugepages`](https://python-all.ru/3.16/using/configure.html#cmdoption-with-pymalloc-hugepages), чтобы эта переменная имела какой-либо эффект.671672Когда включено, выделение арен использует `MAP_HUGETLB` (Linux) или `MEM_LARGE_PAGES` (Windows) с автоматическим переходом на обычные страницы, если большие страницы недоступны.673674> **Предупреждение**675>676> В Linux, если пул больших страниц исчерпан, страничные ошибки – включая ошибки копирования при записи, вызванные [`os.fork()`](https://python-all.ru/3.16/library/os.html#os.fork) – приводят к `SIGBUS` и завершают процесс. Включайте это только в окружениях, где пул больших страниц правильно сконфигурирован и безопасность fork не является проблемой.677>678> В Windows требуется особая привилегия. Смотрите [документацию Windows по большим страницам](https://python-all.ru/3.16/using/cmdline.html) для подробностей. Python не сможет запуститься, если у пользователя нет необходимой привилегии [SeLockMemoryPrivilege](https://python-all.ru/3.16/using/cmdline.html).679680Добавлено в версии 3.15.681682#### `PYTHONLEGACYWINDOWSFSENCODING`683684Если установлена в непустую строку, режим [кодировки файловой системы и обработчика ошибок по умолчанию](https://python-all.ru/3.16/glossary.html#term-filesystem-encoding-and-error-handler) вернётся к значениям до версии 3.6: ‘mbcs’ и ‘replace’ соответственно. В противном случае используются новые значения по умолчанию: ‘utf-8’ и ‘surrogatepass’.685686[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Windows.687688Добавлено в версии 3.6: Подробнее см. [**PEP 529**](https://python-all.ru/3.16/using/cmdline.html).689690#### `PYTHONLEGACYWINDOWSSTDIO`691692Если задана непустая строка, не использует новые средства чтения и записи консоли. Это означает, что символы Unicode будут кодироваться в соответствии с активной кодовой страницей консоли, а не с помощью utf-8.693694Эта переменная игнорируется, если стандартные потоки перенаправлены (в файлы или каналы), а не ссылаются на буферы консоли.695696[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Windows.697698Добавлено в версии 3.6.699700#### `PYTHONCOERCECLOCALE`701702Если установлена в значение `0`, заставляет главное приложение командной строки Python пропустить принудительное преобразование устаревших локалей C и POSIX на основе ASCII в более современную альтернативу на основе UTF-8.703704Если эта переменная *не* установлена (или установлена в значение, отличное от `0`), переменная окружения `LC_ALL` для переопределения локали также не установлена, и текущая локаль для категории `LC_CTYPE` сообщается как локаль по умолчанию `C` или явно основанная на ASCII локаль `POSIX`, то CLI Python попытается настроить следующие локали для категории `LC_CTYPE` в указанном порядке перед загрузкой среды выполнения интерпретатора:705706- `C.UTF-8`707- `C.utf8`708- `UTF-8`709710Если установка одной из этих категорий локали проходит успешно, то переменная окружения `LC_CTYPE` также будет соответствующим образом установлена в окружении текущего процесса до инициализации среды выполнения Python. Это гарантирует, что помимо того, что обновленная настройка видна как самому интерпретатору, так и другим компонентам, учитывающим локаль, работающим в том же процессе (например, библиотеке GNU `readline`), она также будет видна в подпроцессах (независимо от того, выполняют ли эти процессы интерпретатор Python или нет), а также в операциях, которые запрашивают окружение, а не текущую локаль C (таких как собственная функция [`locale.getdefaultlocale()`](https://python-all.ru/3.16/library/locale.html#locale.getdefaultlocale) в Python).711712Настройка одной из этих локалей (явно или через неявное принуждение локали) автоматически включает обработчик ошибок `surrogateescape` [https://python-all.ru/3.16/library/codecs.html#error-handlers](https://python-all.ru/3.16/library/codecs.html#error-handlers) для [`sys.stdin`](https://python-all.ru/3.16/library/sys.html#sys.stdin) и [`sys.stdout`](https://python-all.ru/3.16/library/sys.html#sys.stdout) ([`sys.stderr`](https://python-all.ru/3.16/library/sys.html#sys.stderr) продолжает использовать `backslashreplace`, как и в любой другой локали). Это поведение обработки потоков можно переопределить, используя [`PYTHONIOENCODING`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONIOENCODING), как обычно.713714В целях отладки установка `PYTHONCOERCECLOCALE=warn` приведет к тому, что Python будет выводить предупреждающие сообщения в `stderr`, если либо сработает принуждение локали, либо если локаль, которая *должна была бы* вызвать принуждение, все еще активна при инициализации среды выполнения Python.715716Также обратите внимание, что даже если принуждение локали отключено или не удается найти подходящую целевую локаль, [`PYTHONUTF8`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONUTF8) все равно будет активирован по умолчанию в устаревших локалях на основе ASCII. Обе функции должны быть отключены, чтобы заставить интерпретатор использовать `ASCII` вместо `UTF-8` для системных интерфейсов.717718[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.719720Добавлено в версии 3.7: См. [**PEP 538**](https://python-all.ru/3.16/using/cmdline.html) для получения дополнительной информации.721722#### `PYTHONDEVMODE`723724Если эта переменная окружения установлена в непустую строку, включает [режим разработки Python](https://python-all.ru/3.16/library/devmode.html#devmode), добавляя дополнительные проверки во время выполнения, которые слишком дороги для включения по умолчанию. Это эквивалентно установке опции [`-X`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X) `dev`.725726Добавлено в версии 3.7.727728#### `PYTHONUTF8`729730Если установлено в `1`, включает [режим UTF-8 Python](https://python-all.ru/3.16/library/os.html#utf8-mode).731732Если установлено в `0`, отключает [режим UTF-8 Python](https://python-all.ru/3.16/library/os.html#utf8-mode).733734Установка любой другой непустой строки вызывает ошибку при инициализации интерпретатора.735736Добавлено в версии 3.7.737738#### `PYTHONWARNDEFAULTENCODING`739740Если эта переменная окружения установлена в непустую строку, выдается [`EncodingWarning`](https://python-all.ru/3.16/library/exceptions.html#EncodingWarning), когда используется кодировка по умолчанию, зависящая от локали.741742Подробнее см. [Opt-in EncodingWarning](https://python-all.ru/3.16/library/io.html#io-encoding-warning).743744Добавлено в версии 3.10.745746#### `PYTHONNODEBUGRANGES`747748Если эта переменная установлена, она отключает включение таблиц, сопоставляющих дополнительную информацию о местоположении (конечная строка, смещение начального столбца и смещение конечного столбца) с каждой инструкцией в объектах кода. Это полезно, когда нужны объекты кода и pyc-файлы меньшего размера, а также для подавления дополнительных визуальных индикаторов местоположения при отображении трассировок интерпретатором.749750Добавлено в версии 3.12.751752#### `PYTHONPERFSUPPORT`753754Если эта переменная установлена в ненулевое значение, она включает поддержку профилировщика Linux `perf`, чтобы он мог обнаруживать вызовы Python.755756Если установлено в `0`, отключает поддержку профилировщика Linux `perf`.757758Смотрите также опцию командной строки [`-X perf`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X) и [поддержку Python для профайлеров, совместимых с perf map](https://python-all.ru/3.16/howto/perf_profiling.html#perf-profiling).759760Добавлено в версии 3.12.761762#### `PYTHON_PERF_JIT_SUPPORT`763764Если эта переменная установлена в ненулевое значение, она включает поддержку профилировщика Linux `perf`, чтобы он мог обнаруживать вызовы Python с использованием информации DWARF.765766Если установлено в `0`, отключает поддержку профилировщика Linux `perf`.767768Смотрите также опцию командной строки [`-X perf_jit`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X) и [поддержку Python для профайлеров, совместимых с perf map](https://python-all.ru/3.16/howto/perf_profiling.html#perf-profiling).769770Добавлено в версии 3.13.771772#### `PYTHON_DISABLE_REMOTE_DEBUG`773774Если эта переменная установлена в непустую строку, она отключает функцию удаленной отладки, описанную в [**PEP 768**](https://python-all.ru/3.16/using/cmdline.html). Сюда входят как функциональность планирования выполнения кода в другом процессе, так и функциональность получения кода для выполнения в текущем процессе.775776См. также опцию командной строки [`-X disable_remote_debug`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X).777778Добавлено в версии 3.14.779780#### `PYTHON_CPU_COUNT`781782Если эта переменная установлена в положительное целое число, она переопределяет возвращаемые значения [`os.cpu_count()`](https://python-all.ru/3.16/library/os.html#os.cpu_count) и [`os.process_cpu_count()`](https://python-all.ru/3.16/library/os.html#os.process_cpu_count).783784См. также опцию командной строки [`-X cpu_count`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X).785786Добавлено в версии 3.13.787788#### `PYTHON_FROZEN_MODULES`789790Если этой переменной присвоено значение `on` или `off`, она определяет, будут ли замороженные модули игнорироваться механизмом импорта. Значение `on` означает, что они импортируются, а `off` – что игнорируются. По умолчанию используется `on` для сборок без отладки (обычный случай) и `off` для отладочных сборок. Обратите внимание, что замороженные модули `importlib_bootstrap` и `importlib_bootstrap_external` всегда используются, даже если этот флаг установлен в `off`.791792См. также опцию командной строки [`-X frozen_modules`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X).793794Добавлено в версии 3.13.795796#### `PYTHON_COLORS`797798Если этой переменной присвоено значение `1`, интерпретатор будет раскрашивать различные виды вывода. Значение `0` отключает это поведение. См. также [Управление цветом](https://python-all.ru/3.16/using/cmdline.html#using-on-controlling-color).799800Добавлено в версии 3.13.801802#### `PYTHON_BASIC_REPL`803804Если этой переменной присвоено любое значение, интерпретатор не будет пытаться загружать основанную на Python [REPL](https://python-all.ru/3.16/glossary.html#term-REPL), для которой требуется [`readline`](https://python-all.ru/3.16/library/readline.html#module-readline), а вместо этого будет использовать традиционную REPL, основанную на синтаксическом анализаторе.805806Добавлено в версии 3.13.807808#### `PYTHON_BASIC_COMPLETER`809810Если эта переменная установлена в любое значение, PyREPL будет использовать [`rlcompleter`](https://python-all.ru/3.16/library/rlcompleter.html#module-rlcompleter) для реализации автодополнения по табуляции, вместо стандартного, которое использует цвета.811812Добавлено в версии 3.15.813814#### `PYTHON_HISTORY`815816Эту переменную окружения можно использовать для указания расположения файла `.python_history` (по умолчанию он находится в `.python_history` в домашнем каталоге пользователя).817818Добавлено в версии 3.13.819820#### `PYTHON_GIL`821822Если этой переменной присвоено значение `1`, глобальная блокировка интерпретатора (GIL) будет принудительно включена. Значение `0` принудительно отключает GIL (требуется Python, собранный с опцией сборки [`--disable-gil`](https://python-all.ru/3.16/using/configure.html#cmdoption-disable-gil)).823824См. также опцию командной строки [`-X gil`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X), которая имеет приоритет над этой переменной, и [Free-threaded CPython](https://python-all.ru/3.16/whatsnew/3.13.html#whatsnew313-free-threaded-cpython).825826Добавлено в версии 3.13.827828#### `PYTHON_THREAD_INHERIT_CONTEXT`829830Если этой переменной присвоено значение `1`, то [`Thread`](https://python-all.ru/3.16/library/threading.html#threading.Thread) будет по умолчанию использовать копию контекста вызывающего объекта `Thread.start()` при запуске. В противном случае новые потоки будут запускаться с пустым контекстом. Если переменная не задана, по умолчанию используется `1` в сборках со свободной потокостью и `0` в остальных случаях. См. также [`-X thread_inherit_context`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X).831832Добавлено в версии 3.14.833834#### `PYTHON_CONTEXT_AWARE_WARNINGS`835836Если установлено значение `1`, то контекстный менеджер [`warnings.catch_warnings`](https://python-all.ru/3.16/library/warnings.html#warnings.catch_warnings) будет использовать [`ContextVar`](https://python-all.ru/3.16/library/contextvars.html#contextvars.ContextVar) для хранения состояния фильтра предупреждений. Если переменная не задана, по умолчанию используется `1` в сборках со свободной потокостью и `0` в остальных случаях. См. [`-X context_aware_warnings`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X).837838Добавлено в версии 3.14.839840#### `PYTHON_PATHCONFIG_WARNINGS`841842Если true (`1`), то [инициализация пути поиска модулей sys.path](https://python-all.ru/3.16/library/sys_path_init.html#sys-path-init) может записывать предупреждения в stderr. Если false (`0`), такие предупреждения подавляются. По умолчанию true. См. также [`-X pathconfig_warnings`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X).843844Добавлено в версии 3.15.845846#### `PYTHON_JIT`847848В сборках, где доступна экспериментальная JIT-компиляция, эта переменная может принудительно отключить (`0`) или включить (`1`) JIT при запуске интерпретатора.849850Добавлено в версии 3.13.851852#### `PYTHON_TLBC`853854Если установлено значение `1`, включает поточный локальный байткод. Если установлено значение `0`, поточный локальный байткод и специализирующий интерпретатор отключаются. Применяется только к сборкам, сконфигурированным с [`--disable-gil`](https://python-all.ru/3.16/using/configure.html#cmdoption-disable-gil).855856См. также опцию командной строки [`-X tlbc`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X).857858Добавлено в версии 3.14.859860#### `PYTHON_LAZY_IMPORTS`861862Управляет поведением ленивых импортов. Принимает два значения: `all` делает все импорты ленивыми по умолчанию, а `normal` (по умолчанию) учитывает ключевое слово `lazy` в исходном коде.863864См. также опцию командной строки [`-X lazy_imports`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X).865866Добавлено в версии 3.15.867868### 1.2.1. Переменные режима отладки869870#### `PYTHONDUMPREFS`871872Если установлено, Python будет выгружать объекты и счетчики ссылок, все еще живые после завершения работы интерпретатора.873874Требуется Python, собранный с опцией сборки [`--with-trace-refs`](https://python-all.ru/3.16/using/configure.html#cmdoption-with-trace-refs).875876#### `PYTHONDUMPREFSFILE`877878Если установлено, Python будет выгружать объекты и счетчики ссылок, все еще живые после завершения работы интерпретатора, в файл по пути, заданному значением этой переменной окружения.879880Требуется Python, собранный с опцией сборки [`--with-trace-refs`](https://python-all.ru/3.16/using/configure.html#cmdoption-with-trace-refs).881882Добавлено в версии 3.12.883884#### `PYTHON_PRESITE`885886Если этой переменной присвоено имя модуля, этот модуль будет импортирован на раннем этапе жизненного цикла интерпретатора, до выполнения модуля [`site`](https://python-all.ru/3.16/library/site.html#module-site) и до создания модуля [`__main__`](https://python-all.ru/3.16/library/__main__.html#module-__main__). Поэтому импортированный модуль не рассматривается как `__main__`.887888Это можно использовать для выполнения кода на раннем этапе инициализации Python.889890Чтобы импортировать подмодуль, используйте в качестве значения `package.module`, как в инструкции import.891892См. также параметр командной строки [`-X presite`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X), который имеет приоритет над этой переменной.893894Требуется Python, собранный с опцией сборки [`--with-pydebug`](https://python-all.ru/3.16/using/configure.html#cmdoption-with-pydebug).895896Изменено в версии 3.15: Принимает также `module:func` формат точки входа.897898Добавлено в версии 3.13.899