Документация Python неофициальный перевод

cmdline.md

670 строк · 69.5 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.11/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.11/reference/introduction.html#implementations).1213## 1.1. Командная строка1415При запуске Python можно указать любые из этих опций:1617```sh18python [-bBdEhiIOqsSuvVWx?] [-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`).32- При вызове с именем файла в качестве аргумента или с файлом в качестве стандартного ввода он читает и выполняет скрипт из этого файла.33- При вызове с именем каталога в качестве аргумента он читает и выполняет соответствующий скрипт из этого каталога.34- При вызове с `-c command` выполняется инструкция(и) Python, переданная как *command*. Здесь *command* может содержать несколько инструкций, разделённых переводами строк. Начальные пробелы в инструкциях Python значимы!35- При вызове с `-m module-name` указанный модуль находится в пути поиска модулей Python и выполняется как скрипт.3637В неинтерактивном режиме весь ввод анализируется до его выполнения.3839При указании опции интерфейса список параметров, обрабатываемых интерпретатором, завершается, и все последующие аргументы попадают в [`sys.argv`](https://python-all.ru/3.11/library/sys.html#sys.argv) – первый элемент (индекс ноль, `sys.argv[0]`) является строкой, указывающей на источник программы.4041#### `-c <command>`4243Выполняет код Python, указанный в *command*. *command* может содержать одну или несколько инструкций, разделённых переводами строк; начальные пробелы, как и в обычном коде модуля, имеют значение.4445Если указана эта опция, первый элемент [`sys.argv`](https://python-all.ru/3.11/library/sys.html#sys.argv) будет равен `"-c"`, а текущий каталог будет добавлен в начало [`sys.path`](https://python-all.ru/3.11/library/sys.html#sys.path) (что позволяет импортировать модули из этого каталога как модули верхнего уровня).4647Вызывает [событие аудита](https://python-all.ru/3.11/library/sys.html#auditing) `cpython.run_command` с аргументом `command`.4849#### `-m <module-name>`5051Ищет [`sys.path`](https://python-all.ru/3.11/library/sys.html#sys.path) указанный модуль и выполняет его содержимое как модуль [`__main__`](https://python-all.ru/3.11/library/__main__.html#module-__main__).5253Поскольку аргумент является именем *модуля*, не следует указывать расширение файла (`.py`). Имя модуля должно быть допустимым абсолютным именем модуля Python, но реализация может не всегда это проверять (например, может позволить использовать имя, содержащее дефис).5455Имена пакетов (включая пакеты пространств имён) также допускаются. Если вместо обычного модуля указано имя пакета, интерпретатор выполнит `<pkg>.__main__` в качестве главного модуля. Это поведение намеренно аналогично обработке каталогов и zip-файлов, которые передаются интерпретатору в качестве аргумента скрипта.5657> **Примечание**58>59> Эту опцию нельзя использовать со встроенными модулями и модулями расширения, написанными на C, поскольку у них нет файлов модулей Python. Однако её можно использовать для предварительно скомпилированных модулей, даже если исходный файл недоступен.6061Если эта опция указана, первый элемент [`sys.argv`](https://python-all.ru/3.11/library/sys.html#sys.argv) будет содержать полный путь к файлу модуля (пока файл модуля находится, первый элемент будет установлен в `"-m"`). Как и в случае с опцией [`-c`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-c), текущий каталог будет добавлен в начало [`sys.path`](https://python-all.ru/3.11/library/sys.html#sys.path).6263Опция [`-I`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-I) может использоваться для запуска скрипта в изолированном режиме, когда [`sys.path`](https://python-all.ru/3.11/library/sys.html#sys.path) не содержит ни текущего каталога, ни каталога site-packages пользователя. Все переменные окружения `PYTHON*` также игнорируются.6465Многие модули стандартной библиотеки содержат код, который вызывается при их выполнении в качестве скрипта. Примером может служить модуль [`timeit`](https://python-all.ru/3.11/library/timeit.html#module-timeit):6667```sh68python -m timeit -s 'setup here' 'benchmarked code here'69python -m timeit -h # подробнее70```7172Вызывает [событие аудита](https://python-all.ru/3.11/library/sys.html#auditing) `cpython.run_module` с аргументом `module-name`.7374> **См. также**75>76> **[`runpy.run_module()`](https://python-all.ru/3.11/library/runpy.html#runpy.run_module)**77>78> Эквивалентная функциональность, доступная напрямую из кода Python79>80> [**PEP 338**](https://python-all.ru/3.11/using/cmdline.html) – Выполнение модулей как сценариев8182Изменено в версии 3.1: Укажите имя пакета, чтобы запустить подмодуль `__main__`.8384Изменено в версии 3.4: также поддерживаются пространственные пакеты8586#### `-`8788Читает команды из стандартного ввода ([`sys.stdin`](https://python-all.ru/3.11/library/sys.html#sys.stdin)). Если стандартный ввод является терминалом, подразумевается [`-i`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-i).8990Если указана эта опция, первым элементом [`sys.argv`](https://python-all.ru/3.11/library/sys.html#sys.argv) будет `"-"`, а текущий каталог будет добавлен в начало [`sys.path`](https://python-all.ru/3.11/library/sys.html#sys.path).9192Возбуждает [событие аудита](https://python-all.ru/3.11/library/sys.html#auditing) `cpython.run_stdin` без аргументов.9394#### `<script>`9596Выполняет код Python, содержащийся в *скрипте*, который должен быть файловым путем (абсолютным или относительным), указывающим на файл Python, каталог с файлом `__main__.py` или ZIP-файл, содержащий файл `__main__.py`.9798Если указана эта опция, первым элементом [`sys.argv`](https://python-all.ru/3.11/library/sys.html#sys.argv) будет имя скрипта, заданное в командной строке.99100Если имя скрипта указывает непосредственно на файл Python, каталог, содержащий этот файл, добавляется в начало [`sys.path`](https://python-all.ru/3.11/library/sys.html#sys.path), а сам файл выполняется как модуль [`__main__`](https://python-all.ru/3.11/library/__main__.html#module-__main__).101102Если имя скрипта ссылается на каталог или ZIP-файл, имя скрипта добавляется в начало [`sys.path`](https://python-all.ru/3.11/library/sys.html#sys.path), а файл `__main__.py` в этом расположении выполняется как модуль [`__main__`](https://python-all.ru/3.11/library/__main__.html#module-__main__).103104Опция [`-I`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-I) может использоваться для запуска скрипта в изолированном режиме, когда [`sys.path`](https://python-all.ru/3.11/library/sys.html#sys.path) не содержит ни каталога скрипта, ни каталога site-packages пользователя. Все переменные окружения `PYTHON*` также игнорируются.105106Вызывает [событие аудита](https://python-all.ru/3.11/library/sys.html#auditing) `cpython.run_file` с аргументом `filename`.107108> **См. также**109>110> **[`runpy.run_path()`](https://python-all.ru/3.11/library/runpy.html#runpy.run_path)**111>112> Эквивалентная функциональность, доступная напрямую из кода Python113114Если не указана опция интерфейса, подразумевается [`-i`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-i), `sys.argv[0]` является пустой строкой (`""`), а текущий каталог будет добавлен в начало [`sys.path`](https://python-all.ru/3.11/library/sys.html#sys.path). Кроме того, автодополнение по табуляции и редактирование истории автоматически включаются, если это доступно на вашей платформе (см. [конфигурацию Readline](https://python-all.ru/3.11/library/site.html#rlcompleter-config)).115116> **См. также**117>118> [Запуск интерпретатора](https://python-all.ru/3.11/tutorial/interpreter.html#tut-invoking)119120Изменено в версии 3.4: Автоматическое включение автодополнения по табуляции и редактирования истории.121122### 1.1.2. Общие опции123124#### `-?`125126#### `-h`127128#### `--help`129130Выводит краткое описание всех опций командной строки и соответствующих переменных окружения и завершает работу.131132#### `--help-env`133134Выводит краткое описание переменных окружения, специфичных для Python, и завершает работу.135136Новое в версии 3.11.137138#### `--help-xoptions`139140Выводит описание специфичных для реализации опций [`-X`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-X) и завершает работу.141142Новое в версии 3.11.143144#### `--help-all`145146Выводит полную информацию об использовании и завершает работу.147148Новое в версии 3.11.149150#### `-V`151152#### `--version`153154Выводит номер версии Python и завершает работу. Пример вывода:155156```text157Python 3.8.0b2+158```159160При указании дважды выводит более подробную информацию о сборке, например:161162```text163Python 3.8.0b2+ (3.8:0c076caaa8, Apr 20 2019, 21:55:00)164[GCC 6.2.0 20161005]165```166167Новое в версии 3.6: Опция `-VV`.168169### 1.1.3. Прочие опции170171#### `-b`172173Выдаёт предупреждение при преобразовании [`bytes`](https://python-all.ru/3.11/library/stdtypes.html#bytes) или [`bytearray`](https://python-all.ru/3.11/library/stdtypes.html#bytearray) в [`str`](https://python-all.ru/3.11/library/stdtypes.html#str) без указания кодировки или при сравнении `bytes` или `bytearray` с `str`, либо `bytes` с [`int`](https://python-all.ru/3.11/library/functions.html#int). Выдаёт ошибку, если опция указана дважды (`-bb`).174175Изменено в версии 3.5: Также влияет на сравнения [`bytes`](https://python-all.ru/3.11/library/stdtypes.html#bytes) с [`int`](https://python-all.ru/3.11/library/functions.html#int).176177#### `-B`178179Если указан, Python не будет пытаться записывать файлы `.pyc` при импорте исходных модулей. См. также [`PYTHONDONTWRITEBYTECODE`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONDONTWRITEBYTECODE).180181#### `--check-hash-based-pycs default|always|never`182183Управляет проверкой файлов `.pyc` на основе хэша. См. [Инвалидация кэшированного байт-кода](https://python-all.ru/3.11/reference/import.html#pyc-invalidation). Если установлено в `default`, проверенные и непроверенные кэш-файлы байт-кода на основе хэша проверяются в соответствии с их стандартной семантикой. Если установлено в `always`, все файлы `.pyc` на основе хэша, как проверенные, так и непроверенные, проверяются на соответствие соответствующему исходному файлу. Если установлено в `never`, файлы `.pyc` на основе хэша не проверяются на соответствие соответствующим исходным файлам.184185На семантику файлов `.pyc` на основе временных меток эта опция не влияет.186187#### `-d`188189Включает отладочный вывод парсера (только для экспертов, зависит от опций компиляции). См. также [`PYTHONDEBUG`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONDEBUG).190191#### `-E`192193Игнорировать все переменные окружения `PYTHON*`, например [`PYTHONPATH`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONPATH) и [`PYTHONHOME`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONHOME), которые могли быть установлены.194195См. также опции [`-P`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-P) и [`-I`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-I) (изолированный режим).196197#### `-i`198199Когда в качестве первого аргумента передан сценарий или используется опция [`-c`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-c), интерактивный режим запускается после выполнения сценария или команды, даже если [`sys.stdin`](https://python-all.ru/3.11/library/sys.html#sys.stdin) не выглядит как терминал. Файл [`PYTHONSTARTUP`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONSTARTUP) при этом не читается.200201Это может быть полезно для проверки глобальных переменных или трассировки стека, когда скрипт вызывает исключение. См. также [`PYTHONINSPECT`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONINSPECT).202203#### `-I`204205Запустить Python в изолированном режиме. Это также подразумевает опции [`-E`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-E), [`-P`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-P) и [`-s`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-s).206207В изолированном режиме [`sys.path`](https://python-all.ru/3.11/library/sys.html#sys.path) не содержит ни каталог скрипта, ни каталог site-packages пользователя. Все переменные окружения `PYTHON*` также игнорируются. Могут быть наложены дополнительные ограничения для предотвращения внедрения пользователем вредоносного кода.208209Новое в версии 3.4.210211#### `-O`212213Удаляет операторы assert и любой код, зависящий от значения [`__debug__`](https://python-all.ru/3.11/library/constants.html#debug__). Дополняет имя файла для скомпилированных ([байт-код](https://python-all.ru/3.11/glossary.html#term-bytecode)) файлов, добавляя `.opt-1` перед расширением `.pyc` (см. [**PEP 488**](https://python-all.ru/3.11/using/cmdline.html)). См. также [`PYTHONOPTIMIZE`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONOPTIMIZE).214215Изменено в версии 3.5: Изменяет имена файлов `.pyc` в соответствии с [**PEP 488**](https://python-all.ru/3.11/using/cmdline.html).216217#### `-OO`218219Выполняет [`-O`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-O), а также отбрасывает строки документации. Дополняет имя файла для скомпилированных ([байт-код](https://python-all.ru/3.11/glossary.html#term-bytecode)) файлов, добавляя `.opt-2` перед расширением `.pyc` (см. [**PEP 488**](https://python-all.ru/3.11/using/cmdline.html)).220221Изменено в версии 3.5: Изменяет имена файлов `.pyc` в соответствии с [**PEP 488**](https://python-all.ru/3.11/using/cmdline.html).222223#### `-P`224225Не добавлять потенциально небезопасный путь к [`sys.path`](https://python-all.ru/3.11/library/sys.html#sys.path):226227- Командная строка `python -m module`: не добавлять текущую рабочую директорию.228- Командная строка `python script.py`: не добавлять каталог скрипта. Если это символическая ссылка, разрешать символические ссылки.229- Командные строки `python -c code` и `python` (REPL) не добавляют в начало пустую строку, что означает текущий рабочий каталог.230231См. также переменную окружения [`PYTHONSAFEPATH`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONSAFEPATH), а также опции [`-E`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-E) и [`-I`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-I) (изолированный режим).232233Новое в версии 3.11.234235#### `-q`236237Не выводить сообщения об авторских правах и версии, даже в интерактивном режиме.238239Новое в версии 3.2.240241#### `-R`242243Включает рандомизацию хешей. Этот параметр действует только в том случае, если переменная окружения [`PYTHONHASHSEED`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONHASHSEED) установлена в `0`, так как рандомизация хешей включена по умолчанию.244245В предыдущих версиях Python эта опция включала рандомизацию хешей, так что значения [`__hash__()`](https://python-all.ru/3.11/reference/datamodel.html#object.__hash__) объектов str и bytes «солились» непредсказуемым случайным значением. Хотя они остаются постоянными в рамках одного процесса Python, они не являются предсказуемыми при повторных запусках Python.246247Рандомизация хешей предназначена для защиты от отказа в обслуживании, вызванного специально подобранными входными данными, которые эксплуатируют производительность в худшем случае при построении словаря – сложность *O*(*n*2). Подробности см. на сайте [http://ocert.org/advisories/ocert-2011-003.html](https://python-all.ru/3.11/using/cmdline.html).248249[`PYTHONHASHSEED`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONHASHSEED) позволяет задать фиксированное значение для секрета начального значения хеша.250251Новое в версии 3.2.3.252253Изменено в версии 3.7: Опция больше не игнорируется.254255#### `-s`256257Не добавляет [`user site-packages directory`](https://python-all.ru/3.11/library/site.html#site.USER_SITE) в [`sys.path`](https://python-all.ru/3.11/library/sys.html#sys.path).258259См. также [`PYTHONNOUSERSITE`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONNOUSERSITE).260261> **См. также**262>263> [**PEP 370**](https://python-all.ru/3.11/using/cmdline.html) – Каталог site-packages для каждого пользователя264265#### `-S`266267Отключает импорт модуля [`site`](https://python-all.ru/3.11/library/site.html#module-site) и связанные с ним site-зависимые манипуляции с [`sys.path`](https://python-all.ru/3.11/library/sys.html#sys.path). Также отключает эти манипуляции, если [`site`](https://python-all.ru/3.11/library/site.html#module-site) явно импортирован позже (для их выполнения следует вызвать [`site.main()`](https://python-all.ru/3.11/library/site.html#site.main)).268269#### `-u`270271Принудительно отключает буферизацию для потоков stdout и stderr. Эта опция не влияет на поток stdin.272273См. также [`PYTHONUNBUFFERED`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONUNBUFFERED).274275Изменено в версии 3.7: Текстовый слой потоков stdout и stderr теперь не буферизуется.276277#### `-v`278279Выводить сообщение каждый раз, когда инициализируется модуль, с указанием места (имя файла или встроенный модуль), откуда он загружается. При указании дважды (`-vv`) выводить сообщение для каждого файла, который проверяется при поиске модуля. Также предоставляет информацию об очистке модуля при завершении.280281Изменено в версии 3.10: Модуль [`site`](https://python-all.ru/3.11/library/site.html#module-site) теперь сообщает о специфичных для сайта путях и обрабатываемых файлах `.pth`.282283См. также [`PYTHONVERBOSE`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONVERBOSE).284285#### `-W arg`286287Управление предупреждениями. Механизм предупреждений Python по умолчанию выводит предупреждающие сообщения в [`sys.stderr`](https://python-all.ru/3.11/library/sys.html#sys.stderr).288289Простейшие настройки применяют определённое действие безусловно ко всем предупреждениям, выдаваемым процессом (даже к тем, которые в противном случае игнорируются по умолчанию):290291```sh292-Wdefault  # Предупреждать один раз на место вызова293-Werror    # Преобразовывать в исключения294-Walways   # Предупреждать каждый раз295-Wmodule   # Предупреждать один раз на вызывающий модуль296-Wonce     # Предупреждать один раз на процесс Python297-Wignore   # Никогда не предупреждать298```299300Названия действий можно сокращать по желанию, и интерпретатор преобразует их в соответствующее полное имя. Например, `-Wi` – то же самое, что `-Wignore`.301302Полная форма аргумента:303304```sh305action:message:category:module:lineno306```307308Пустые поля соответствуют всем значениям; конечные пустые поля можно опускать. Например, `-W ignore::DeprecationWarning` игнорирует все предупреждения DeprecationWarning.309310Поле *action* работает так, как описано выше, но применяется только к предупреждениям, соответствующим остальным полям.311312Поле *message* должно соответствовать всему тексту предупреждения; при этом регистр не учитывается.313314Поле *category* соответствует категории предупреждения (например: `DeprecationWarning`). Это должно быть имя класса; проверка определяет, является ли фактическая категория предупреждения подклассом указанной категории.315316Поле *module* соответствует полному имени модуля (с путём); при этом регистр учитывается.317318Поле *lineno* соответствует номеру строки; ноль соответствует всем номерам строк и поэтому эквивалентен отсутствующему номеру строки.319320Можно указать несколько опций [`-W`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-W); если предупреждение соответствует более чем одной опции, выполняется действие последней подходящей опции. Некорректные опции [`-W`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-W) игнорируются (однако при выдаче первого предупреждения выводится сообщение о некорректных опциях).321322Предупреждениями также можно управлять с помощью переменной окружения [`PYTHONWARNINGS`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONWARNINGS) и из программы на Python с использованием модуля [`warnings`](https://python-all.ru/3.11/library/warnings.html#module-warnings). Например, функция [`warnings.filterwarnings()`](https://python-all.ru/3.11/library/warnings.html#warnings.filterwarnings) позволяет применить регулярное выражение к сообщению предупреждения.323324См. [Фильтр предупреждений](https://python-all.ru/3.11/library/warnings.html#warning-filter) и [Описание фильтров предупреждений](https://python-all.ru/3.11/library/warnings.html#describing-warning-filters) для получения дополнительных сведений.325326#### `-x`327328Пропускает первую строку исходного файла, позволяя использовать не-юниксовые формы `#!cmd`. Это предназначено только для специфического хака DOS.329330#### `-X`331332Зарезервировано для различных опций, специфичных для реализации. В настоящее время CPython определяет следующие возможные значения:333334- `-X faulthandler` для включения [`faulthandler`](https://python-all.ru/3.11/library/faulthandler.html#module-faulthandler). См. также [`PYTHONFAULTHANDLER`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONFAULTHANDLER).335- `-X showrefcount` выводит общее количество ссылок и количество использованных блоков памяти при завершении программы или после каждого оператора в интерактивном интерпретаторе. Это работает только на [отладочных сборках](https://python-all.ru/3.11/using/configure.html#debug-build).336- `-X tracemalloc` для начала трассировки выделений памяти Python с использованием модуля [`tracemalloc`](https://python-all.ru/3.11/library/tracemalloc.html#module-tracemalloc). По умолчанию в трассировочном стеке сохраняется только последний кадр. Используйте `-X tracemalloc=NFRAME` для начала трассировки с ограничением на *NFRAME* кадров. См. [`tracemalloc.start()`](https://python-all.ru/3.11/library/tracemalloc.html#tracemalloc.start) и [`PYTHONTRACEMALLOC`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONTRACEMALLOC) для получения дополнительной информации.337- `-X int_max_str_digits` настраивает [ограничение длины преобразования целых чисел в строки](https://python-all.ru/3.11/library/stdtypes.html#int-max-str-digits). См. также [`PYTHONINTMAXSTRDIGITS`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONINTMAXSTRDIGITS).338- `-X importtime` показывает, сколько времени занимает каждый импорт. Отображается модуль имя, совокупное время (включая вложенные импорты) и собственное время (без учёта вложенных импортов). Обратите внимание, что вывод может быть нарушен в многопоточном приложении. Типичное использование: `python3 -X importtime -c 'import asyncio'`. См. также [`PYTHONPROFILEIMPORTTIME`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONPROFILEIMPORTTIME).339- `-X dev`: включает [режим разработки Python](https://python-all.ru/3.11/library/devmode.html#devmode), вводя дополнительные проверки во время выполнения, которые слишком дороги для включения по умолчанию. См. также [`PYTHONDEVMODE`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONDEVMODE).340- `-X utf8` включает [режим UTF-8 Python](https://python-all.ru/3.11/library/os.html#utf8-mode). `-X utf8=0` явно отключает [режим UTF-8 Python](https://python-all.ru/3.11/library/os.html#utf8-mode) (даже если в противном случае он был бы активирован автоматически). См. также [`PYTHONUTF8`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONUTF8).341- `-X pycache_prefix=PATH` включает запись файлов `.pyc` в параллельное дерево с корнем в указанном каталоге, а не в дерево кода. См. также [`PYTHONPYCACHEPREFIX`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONPYCACHEPREFIX).342- `-X warn_default_encoding` выдает [`EncodingWarning`](https://python-all.ru/3.11/library/exceptions.html#EncodingWarning), когда для открытия файлов используется кодировка по умолчанию, зависящая от локали. См. также [`PYTHONWARNDEFAULTENCODING`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONWARNDEFAULTENCODING).343- `-X no_debug_ranges` отключает включение таблиц, сопоставляющих дополнительную информацию о местоположении (конечная строка, начальное смещение столбца и конечное смещение столбца) каждой инструкции в объектах кода. Это полезно, когда нужны меньшие объекты кода и файлы pyc, а также для подавления дополнительных визуальных индикаторов местоположения при отображении трассировок интерпретатором. См. также [`PYTHONNODEBUGRANGES`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONNODEBUGRANGES).344- `-X frozen_modules` определяет, игнорируются ли замороженные модули механизмом импорта. Значение «on» означает, что они импортируются, а «off» – что игнорируются. По умолчанию используется «on», если это установленный Python (обычный случай). Если среда разработки (запуск из дерева исходников), то по умолчанию – «off». Обратите внимание, что замороженные модули «importlib\_bootstrap» и «importlib\_bootstrap\_external» всегда используются, даже если этот флаг установлен в «off».345346Он также позволяет передавать произвольные значения и извлекать их через словарь [`sys._xoptions`](https://python-all.ru/3.11/library/sys.html#sys._xoptions).347348Новое в версии 3.2.349350Изменено в версии 3.3: Добавлена опция `-X faulthandler`.351352Изменено в версии 3.4: Добавлены опции `-X showrefcount` и `-X tracemalloc`.353354Изменено в версии 3.6: Добавлена опция `-X showalloccount`.355356Изменено в версии 3.7: Добавлены опции `-X importtime`, `-X dev` и `-X utf8`.357358Изменено в версии 3.8: Добавлена опция `-X pycache_prefix`. Опция `-X dev` теперь регистрирует `close()` исключения в деструкторе [`io.IOBase`](https://python-all.ru/3.11/library/io.html#io.IOBase).359360Изменено в версии 3.9: При использовании опции `-X dev` проверяются аргументы *encoding* и *errors* при операциях кодирования и декодирования строк.361362Опция `-X showalloccount` была удалена.363364Изменено в версии 3.10: Добавлена опция `-X warn_default_encoding`. Удалена опция `-X oldparser`.365366Изменено в версии 3.11: Добавлены опции `-X no_debug_ranges`, `-X frozen_modules` и `-X int_max_str_digits`.367368### 1.1.4. Параметры, которые не стоит использовать369370#### `-J`371372Зарезервировано для [Jython](https://python-all.ru/3.11/using/cmdline.html).373374## 1.2. Переменные окружения375376Эти переменные окружения влияют на поведение Python, они обрабатываются до параметров командной строки, кроме -E или -I. Принято, что параметры командной строки переопределяют переменные окружения в случае конфликта.377378#### `PYTHONHOME`379380Изменяет расположение стандартных библиотек Python. По умолчанию библиотеки ищутся в `prefix/lib/pythonversion` и `exec_prefix/lib/pythonversion`, где `prefix` и `exec_prefix` – это каталоги, зависящие от установки; оба по умолчанию имеют значение `/usr/local`.381382Когда [`PYTHONHOME`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONHOME) установлен в один каталог, его значение заменяет оба `prefix` и `exec_prefix`. Чтобы указать для них разные значения, установите [`PYTHONHOME`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONHOME) в `prefix:exec_prefix`.383384#### `PYTHONPATH`385386Дополняет путь поиска модулей по умолчанию. Формат такой же, как у `PATH` оболочки: один или несколько путей к каталогам, разделённых [`os.pathsep`](https://python-all.ru/3.11/library/os.html#os.pathsep) (например, двоеточиями в Unix или точкой с запятой в Windows). Несуществующие каталоги игнорируются без предупреждения.387388В дополнение к обычным каталогам, отдельные записи [`PYTHONPATH`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONPATH) могут ссылаться на zip-файлы, содержащие чистые модули Python (в исходной или скомпилированной форме). Модули расширений не могут быть импортированы из zip-файлов.389390Путь поиска по умолчанию зависит от установки, но обычно начинается с `prefix/lib/pythonversion` (см. [`PYTHONHOME`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONHOME) выше). Он *всегда* добавляется к [`PYTHONPATH`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONPATH).391392Дополнительный каталог будет вставлен в путь поиска перед [`PYTHONPATH`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONPATH), как описано выше в разделе [Параметры интерфейса](https://python-all.ru/3.11/using/cmdline.html#using-on-interface-options). Путь поиска можно изменять из программы Python как переменную [`sys.path`](https://python-all.ru/3.11/library/sys.html#sys.path).393394#### `PYTHONSAFEPATH`395396Если эта переменная установлена в непустую строку, потенциально небезопасный путь не будет добавляться в начало [`sys.path`](https://python-all.ru/3.11/library/sys.html#sys.path): подробнее см. параметр [`-P`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-P).397398Новое в версии 3.11.399400#### `PYTHONPLATLIBDIR`401402Если эта переменная установлена в непустую строку, она переопределяет значение [`sys.platlibdir`](https://python-all.ru/3.11/library/sys.html#sys.platlibdir).403404Новое в версии 3.9.405406#### `PYTHONSTARTUP`407408Если это имя читаемого файла, команды Python из этого файла выполняются перед отображением первого приглашения в интерактивном режиме. Файл выполняется в том же пространстве имён, что и интерактивные команды, поэтому определённые или импортированные в нём объекты могут использоваться без уточнения в интерактивном сеансе. Также в этом файле можно изменить приглашения [`sys.ps1`](https://python-all.ru/3.11/library/sys.html#sys.ps1) и [`sys.ps2`](https://python-all.ru/3.11/library/sys.html#sys.ps2) и хук [`sys.__interactivehook__`](https://python-all.ru/3.11/library/sys.html#sys.__interactivehook__).409410Вызывает [событие аудита](https://python-all.ru/3.11/library/sys.html#auditing) `cpython.run_startup` с именем файла в качестве аргумента при вызове во время запуска.411412#### `PYTHONOPTIMIZE`413414Если эта переменная установлена в непустую строку, это эквивалентно указанию опции [`-O`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-O). Если установлено целое число, это эквивалентно указанию [`-O`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-O) несколько раз.415416#### `PYTHONBREAKPOINT`417418Если эта переменная установлена, она задаёт вызываемый объект в нотации с точками. Модуль, содержащий вызываемый объект, будет импортирован, а затем вызываемый объект будет запущен реализацией по умолчанию [`sys.breakpointhook()`](https://python-all.ru/3.11/library/sys.html#sys.breakpointhook), которая сама вызывается встроенной [`breakpoint()`](https://python-all.ru/3.11/library/functions.html#breakpoint). Если не установлена или установлена в пустую строку, это эквивалентно значению "pdb.set\_trace". Установка в строку "0" заставляет реализацию по умолчанию [`sys.breakpointhook()`](https://python-all.ru/3.11/library/sys.html#sys.breakpointhook) ничего не делать и немедленно вернуться.419420Добавлено в версии 3.7.421422#### `PYTHONDEBUG`423424Если эта переменная установлена в непустую строку, это эквивалентно указанию опции [`-d`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-d). Если установлено целое число, это эквивалентно указанию [`-d`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-d) несколько раз.425426#### `PYTHONINSPECT`427428Если эта переменная установлена в непустую строку, это эквивалентно указанию опции [`-i`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-i).429430Эта переменная также может быть изменена кодом Python с помощью [`os.environ`](https://python-all.ru/3.11/library/os.html#os.environ), чтобы принудительно включить режим инспектирования при завершении программы.431432Возбуждает [событие аудита](https://python-all.ru/3.11/library/sys.html#auditing) `cpython.run_stdin` без аргументов.433434Изменено в версии 3.11.10: (также 3.10.15, 3.9.20 и 3.8.20) Вызывает события аудита.435436#### `PYTHONUNBUFFERED`437438Если эта переменная установлена в непустую строку, это эквивалентно указанию опции [`-u`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-u).439440#### `PYTHONVERBOSE`441442Если эта переменная установлена в непустую строку, это эквивалентно указанию опции [`-v`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-v). Если установлено целое число, это эквивалентно указанию [`-v`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-v) несколько раз.443444#### `PYTHONCASEOK`445446Если эта переменная установлена, Python игнорирует регистр в операторах [`import`](https://python-all.ru/3.11/reference/simple_stmts.html#import). Это работает только в Windows и macOS.447448#### `PYTHONDONTWRITEBYTECODE`449450Если эта переменная установлена в непустую строку, Python не будет пытаться записывать файлы `.pyc` при импорте исходных модулей. Это эквивалентно указанию опции [`-B`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-B).451452#### `PYTHONPYCACHEPREFIX`453454Если эта переменная установлена, Python будет записывать файлы `.pyc` в зеркальное дерево каталогов по указанному пути, вместо каталогов `__pycache__` внутри исходного дерева. Это эквивалентно указанию опции [`-X`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-X) `pycache_prefix=PATH`.455456Новое в версии 3.8.457458#### `PYTHONHASHSEED`459460Если эта переменная не установлена или установлена в `random`, используется случайное значение для инициализации хешей объектов str и bytes.461462Если [`PYTHONHASHSEED`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONHASHSEED) установлено в целое число, оно используется как фиксированное начальное значение для генерации hash() для типов, охваченных рандомизацией хешей.463464Его цель – обеспечить воспроизводимое хеширование, например, для самотестирования самого интерпретатора, или чтобы позволить кластеру процессов Python обмениваться значениями хешей.465466Целое число должно быть десятичным числом в диапазоне \[0, 4294967295\]. Указание значения 0 отключит рандомизацию хешей.467468Новое в версии 3.2.3.469470#### `PYTHONINTMAXSTRDIGITS`471472Если эта переменная установлена в целое число, она используется для настройки глобального [ограничения длины преобразования целого числа в строку](https://python-all.ru/3.11/library/stdtypes.html#int-max-str-digits).473474Новое в версии 3.11.475476#### `PYTHONIOENCODING`477478Если эта переменная установлена до запуска интерпретатора, она переопределяет кодировку, используемую для stdin/stdout/stderr, в синтаксисе `encodingname:errorhandler`. Обе части `encodingname` и `:errorhandler` необязательны и имеют то же значение, что и в [`str.encode()`](https://python-all.ru/3.11/library/stdtypes.html#str.encode).479480Для stderr часть `:errorhandler` игнорируется; обработчик всегда будет `'backslashreplace'`.481482Изменено в версии 3.4: Часть `encodingname` теперь необязательна.483484Изменено в версии 3.6: В Windows кодировка, указанная этой переменной, игнорируется для интерактивных буферов консоли, если также не указана [`PYTHONLEGACYWINDOWSSTDIO`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONLEGACYWINDOWSSTDIO). Файлы и каналы, перенаправленные через стандартные потоки, не затрагиваются.485486#### `PYTHONNOUSERSITE`487488Если эта переменная установлена, Python не будет добавлять [`user site-packages directory`](https://python-all.ru/3.11/library/site.html#site.USER_SITE) в [`sys.path`](https://python-all.ru/3.11/library/sys.html#sys.path).489490> **См. также**491>492> [**PEP 370**](https://python-all.ru/3.11/using/cmdline.html) – Каталог site-packages для каждого пользователя493494#### `PYTHONUSERBASE`495496Определяет [`user base directory`](https://python-all.ru/3.11/library/site.html#site.USER_BASE), который используется для вычисления пути к [`user site-packages directory`](https://python-all.ru/3.11/library/site.html#site.USER_SITE) и [путей установки](https://python-all.ru/3.11/library/sysconfig.html#sysconfig-user-scheme) для `python -m pip install --user`.497498> **См. также**499>500> [**PEP 370**](https://python-all.ru/3.11/using/cmdline.html) – Каталог site-packages для каждого пользователя501502#### `PYTHONEXECUTABLE`503504Если эта переменная окружения установлена, `sys.argv[0]` будет установлено в её значение вместо значения, полученного через C runtime. Работает только на macOS.505506#### `PYTHONWARNINGS`507508Это эквивалентно опции [`-W`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-W). Если установлено в строку, разделённую запятыми, это эквивалентно многократному указанию [`-W`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-W), при этом фильтры, находящиеся позже в списке, имеют приоритет над теми, что раньше.509510Простейшие настройки применяют определённое действие безусловно ко всем предупреждениям, выдаваемым процессом (даже к тем, которые в противном случае игнорируются по умолчанию):511512```sh513PYTHONWARNINGS=default  # Предупреждать один раз на место вызова514PYTHONWARNINGS=error    # Преобразовывать в исключения515PYTHONWARNINGS=always   # Предупреждать каждый раз516PYTHONWARNINGS=module   # Предупреждать один раз на вызывающий модуль517PYTHONWARNINGS=once     # Предупреждать один раз на процесс Python518PYTHONWARNINGS=ignore   # Никогда не предупреждать519```520521См. [Фильтр предупреждений](https://python-all.ru/3.11/library/warnings.html#warning-filter) и [Описание фильтров предупреждений](https://python-all.ru/3.11/library/warnings.html#describing-warning-filters) для получения дополнительных сведений.522523#### `PYTHONFAULTHANDLER`524525Если эта переменная окружения установлена в непустую строку, при запуске вызывается [`faulthandler.enable()`](https://python-all.ru/3.11/library/faulthandler.html#faulthandler.enable): устанавливается обработчик сигналов [`SIGSEGV`](https://python-all.ru/3.11/library/signal.html#signal.SIGSEGV), [`SIGFPE`](https://python-all.ru/3.11/library/signal.html#signal.SIGFPE), [`SIGABRT`](https://python-all.ru/3.11/library/signal.html#signal.SIGABRT), [`SIGBUS`](https://python-all.ru/3.11/library/signal.html#signal.SIGBUS) и [`SIGILL`](https://python-all.ru/3.11/library/signal.html#signal.SIGILL) для вывода трассировки Python. Это эквивалентно параметру [`-X`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-X) `faulthandler`.526527Новое в версии 3.3.528529#### `PYTHONTRACEMALLOC`530531Если эта переменная окружения установлена в непустую строку, запускается трассировка выделений памяти Python с помощью модуля [`tracemalloc`](https://python-all.ru/3.11/library/tracemalloc.html#module-tracemalloc). Значение переменной – максимальное количество фреймов, сохраняемых в трассировке стека. Например, `PYTHONTRACEMALLOC=1` сохраняет только самый последний фрейм. См. функцию [`tracemalloc.start()`](https://python-all.ru/3.11/library/tracemalloc.html#tracemalloc.start) для получения дополнительной информации. Это эквивалентно установке параметра [`-X`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-X) `tracemalloc`.532533Новое в версии 3.4.534535#### `PYTHONPROFILEIMPORTTIME`536537Если эта переменная окружения установлена в непустую строку, Python будет показывать, сколько времени занимает каждый импорт. Это эквивалентно указанию опции [`-X`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-X) `importtime`.538539Добавлено в версии 3.7.540541#### `PYTHONASYNCIODEBUG`542543Если эта переменная окружения установлена в непустую строку, включает [режим отладки](https://python-all.ru/3.11/library/asyncio-dev.html#asyncio-debug-mode) модуля [`asyncio`](https://python-all.ru/3.11/library/asyncio.html#module-asyncio).544545Новое в версии 3.4.546547#### `PYTHONMALLOC`548549Устанавливает аллокаторы памяти Python и/или добавляет отладочные хуки.550551Устанавливает семейство аллокаторов памяти, используемых Python:552553- `default`: использовать [аллокаторы памяти по умолчанию](https://python-all.ru/3.11/c-api/memory.html#default-memory-allocators).554- `malloc`: использовать функцию `malloc()` библиотеки C для всех областей ([`PYMEM_DOMAIN_RAW`](https://python-all.ru/3.11/c-api/memory.html#c.PYMEM_DOMAIN_RAW), [`PYMEM_DOMAIN_MEM`](https://python-all.ru/3.11/c-api/memory.html#c.PYMEM_DOMAIN_MEM), [`PYMEM_DOMAIN_OBJ`](https://python-all.ru/3.11/c-api/memory.html#c.PYMEM_DOMAIN_OBJ)).555- `pymalloc`: использовать [аллокатор pymalloc](https://python-all.ru/3.11/c-api/memory.html#pymalloc) для областей [`PYMEM_DOMAIN_MEM`](https://python-all.ru/3.11/c-api/memory.html#c.PYMEM_DOMAIN_MEM) и [`PYMEM_DOMAIN_OBJ`](https://python-all.ru/3.11/c-api/memory.html#c.PYMEM_DOMAIN_OBJ), а функцию `malloc()` – для области [`PYMEM_DOMAIN_RAW`](https://python-all.ru/3.11/c-api/memory.html#c.PYMEM_DOMAIN_RAW).556557Установка [отладочных хуков](https://python-all.ru/3.11/c-api/memory.html#pymem-debug-hooks):558559- `debug`: установить отладочные хуки поверх [аллокаторов памяти по умолчанию](https://python-all.ru/3.11/c-api/memory.html#default-memory-allocators).560- `malloc_debug`: то же, что `malloc`, но также устанавливает отладочные хуки.561- `pymalloc_debug`: то же, что `pymalloc`, но также устанавливает отладочные хуки.562563Новое в версии 3.6.564565Изменено в версии 3.7: Добавлен аллокатор `"default"`.566567#### `PYTHONMALLOCSTATS`568569Если установлена в непустую строку, Python будет выводить статистику [аллокатора памяти pymalloc](https://python-all.ru/3.11/c-api/memory.html#pymalloc) каждый раз, когда создаётся новая арена объекта pymalloc, а также при завершении работы.570571Эта переменная игнорируется, если переменная окружения [`PYTHONMALLOC`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONMALLOC) используется для принудительного выбора аллокатора `malloc()` из библиотеки C, или если Python скомпилирован без поддержки `pymalloc`.572573Изменено в версии 3.6: Теперь эту переменную можно также использовать в Python, скомпилированном в режиме релиза. Теперь она не действует, если установлена в пустую строку.574575#### `PYTHONLEGACYWINDOWSFSENCODING`576577Если установлена в непустую строку, режим [кодировки файловой системы и обработчика ошибок по умолчанию](https://python-all.ru/3.11/glossary.html#term-filesystem-encoding-and-error-handler) вернётся к значениям до версии 3.6: ‘mbcs’ и ‘replace’ соответственно. В противном случае используются новые значения по умолчанию: ‘utf-8’ и ‘surrogatepass’.578579Это также можно включить во время выполнения с помощью [`sys._enablelegacywindowsfsencoding()`](https://python-all.ru/3.11/library/sys.html#sys._enablelegacywindowsfsencoding).580581[Доступность](https://python-all.ru/3.11/library/intro.html#availability): Windows.582583Новое в версии 3.6: Подробности см. в [**PEP 529**](https://python-all.ru/3.11/using/cmdline.html).584585#### `PYTHONLEGACYWINDOWSSTDIO`586587Если задана непустая строка, не использует новые средства чтения и записи консоли. Это означает, что символы Unicode будут кодироваться в соответствии с активной кодовой страницей консоли, а не с помощью utf-8.588589Эта переменная игнорируется, если стандартные потоки перенаправлены (в файлы или каналы), а не ссылаются на буферы консоли.590591[Доступность](https://python-all.ru/3.11/library/intro.html#availability): Windows.592593Новое в версии 3.6.594595#### `PYTHONCOERCECLOCALE`596597Если установлена в значение `0`, заставляет главное приложение командной строки Python пропустить принудительное преобразование устаревших локалей C и POSIX на основе ASCII в более современную альтернативу на основе UTF-8.598599Если эта переменная *не* установлена (или установлена в значение, отличное от `0`), переменная окружения `LC_ALL` для переопределения локали также не установлена, и текущая локаль для категории `LC_CTYPE` сообщается как локаль по умолчанию `C` или явно основанная на ASCII локаль `POSIX`, то CLI Python попытается настроить следующие локали для категории `LC_CTYPE` в указанном порядке перед загрузкой среды выполнения интерпретатора:600601- `C.UTF-8`602- `C.utf8`603- `UTF-8`604605Если установка одной из этих категорий локали проходит успешно, то переменная окружения `LC_CTYPE` также будет соответствующим образом установлена в окружении текущего процесса до инициализации среды выполнения Python. Это гарантирует, что помимо того, что обновленная настройка видна как самому интерпретатору, так и другим компонентам, учитывающим локаль, работающим в том же процессе (например, библиотеке GNU `readline`), она также будет видна в подпроцессах (независимо от того, выполняют ли эти процессы интерпретатор Python или нет), а также в операциях, которые запрашивают окружение, а не текущую локаль C (таких как собственная функция [`locale.getdefaultlocale()`](https://python-all.ru/3.11/library/locale.html#locale.getdefaultlocale) в Python).606607Настройка одной из этих локалей (явно или через неявное принуждение локали) автоматически включает обработчик ошибок `surrogateescape` [https://python-all.ru/3.11/library/codecs.html#error-handlers](https://python-all.ru/3.11/library/codecs.html#error-handlers) для [`sys.stdin`](https://python-all.ru/3.11/library/sys.html#sys.stdin) и [`sys.stdout`](https://python-all.ru/3.11/library/sys.html#sys.stdout) ([`sys.stderr`](https://python-all.ru/3.11/library/sys.html#sys.stderr) продолжает использовать `backslashreplace`, как и в любой другой локали). Это поведение обработки потоков можно переопределить, используя [`PYTHONIOENCODING`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONIOENCODING), как обычно.608609В целях отладки установка `PYTHONCOERCECLOCALE=warn` приведет к тому, что Python будет выводить предупреждающие сообщения в `stderr`, если либо сработает принуждение локали, либо если локаль, которая *должна была бы* вызвать принуждение, все еще активна при инициализации среды выполнения Python.610611Также обратите внимание, что даже если принуждение локали отключено или не удается найти подходящую целевую локаль, [`PYTHONUTF8`](https://python-all.ru/3.11/using/cmdline.html#envvar-PYTHONUTF8) все равно будет активирован по умолчанию в устаревших локалях на основе ASCII. Обе функции должны быть отключены, чтобы заставить интерпретатор использовать `ASCII` вместо `UTF-8` для системных интерфейсов.612613[Доступность](https://python-all.ru/3.11/library/intro.html#availability): Unix.614615Новое в версии 3.7: См. [**PEP 538**](https://python-all.ru/3.11/using/cmdline.html) для подробностей.616617#### `PYTHONDEVMODE`618619Если эта переменная окружения установлена в непустую строку, включает [режим разработки Python](https://python-all.ru/3.11/library/devmode.html#devmode), добавляя дополнительные проверки во время выполнения, которые слишком дороги для включения по умолчанию. Это эквивалентно установке опции [`-X`](https://python-all.ru/3.11/using/cmdline.html#cmdoption-X) `dev`.620621Добавлено в версии 3.7.622623#### `PYTHONUTF8`624625Если установлено в `1`, включает [режим UTF-8 Python](https://python-all.ru/3.11/library/os.html#utf8-mode).626627Если установлено в `0`, отключает [режим UTF-8 Python](https://python-all.ru/3.11/library/os.html#utf8-mode).628629Установка любой другой непустой строки вызывает ошибку при инициализации интерпретатора.630631Добавлено в версии 3.7.632633#### `PYTHONWARNDEFAULTENCODING`634635Если эта переменная окружения установлена в непустую строку, выдается [`EncodingWarning`](https://python-all.ru/3.11/library/exceptions.html#EncodingWarning), когда используется кодировка по умолчанию, зависящая от локали.636637Подробнее см. [Opt-in EncodingWarning](https://python-all.ru/3.11/library/io.html#io-encoding-warning).638639Новое в версии 3.10.640641#### `PYTHONNODEBUGRANGES`642643Если эта переменная установлена, она отключает включение таблиц, сопоставляющих дополнительную информацию о местоположении (конечная строка, смещение начального столбца и смещение конечного столбца) с каждой инструкцией в объектах кода. Это полезно, когда нужны объекты кода и pyc-файлы меньшего размера, а также для подавления дополнительных визуальных индикаторов местоположения при отображении трассировок интерпретатором.644645Новое в версии 3.11.646647### 1.2.1. Переменные режима отладки648649#### `PYTHONTHREADDEBUG`650651Если установлено, Python будет выводить отладочную информацию о потоках в stdout.652653Требуется [отладочная сборка Python](https://python-all.ru/3.11/using/configure.html#debug-build).654655Устарело с версии 3.10, будет удалено в версии 3.12.656657#### `PYTHONDUMPREFS`658659Если установлено, Python будет выгружать объекты и счетчики ссылок, все еще живые после завершения работы интерпретатора.660661Требуется Python, собранный с опцией сборки [`--with-trace-refs`](https://python-all.ru/3.11/using/configure.html#cmdoption-with-trace-refs).662663#### `PYTHONDUMPREFSFILE=FILENAME`664665Если установлено, Python будет выгружать объекты и счётчики ссылок, остающиеся в памяти, после завершения работы интерпретатора, в файл с именем *FILENAME*.666667Требуется Python, собранный с опцией сборки [`--with-trace-refs`](https://python-all.ru/3.11/using/configure.html#cmdoption-with-trace-refs).668669Новое в версии 3.11.670