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

cmdline.md

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

1> **Источник:** https://python-all.ru/3.5/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.5/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.5/library/sys.html#sys.argv) – первый элемент (индекс ноль, `sys.argv[0]`) является строкой, указывающей на источник программы.4041#### `-c <command>`4243Выполняет код Python, указанный в *command*. *command* может содержать одну или несколько инструкций, разделённых переводами строк; начальные пробелы, как и в обычном коде модуля, имеют значение.4445Если указана эта опция, первый элемент [`sys.argv`](https://python-all.ru/3.5/library/sys.html#sys.argv) будет равен `"-c"`, а текущий каталог будет добавлен в начало [`sys.path`](https://python-all.ru/3.5/library/sys.html#sys.path) (что позволяет импортировать модули из этого каталога как модули верхнего уровня).4647#### `-m <module-name>`4849Ищет [`sys.path`](https://python-all.ru/3.5/library/sys.html#sys.path) указанный модуль и выполняет его содержимое как модуль [`__main__`](https://python-all.ru/3.5/library/__main__.html#module-__main__).5051Поскольку аргумент является именем *модуля*, не следует указывать расширение файла (`.py`). Имя модуля должно быть допустимым абсолютным именем модуля Python, но реализация может не всегда это проверять (например, может позволить использовать имя, содержащее дефис).5253Имена пакетов (включая пакеты пространств имён) также допускаются. Если вместо обычного модуля указано имя пакета, интерпретатор выполнит `<pkg>.__main__` в качестве главного модуля. Это поведение намеренно аналогично обработке каталогов и zip-файлов, которые передаются интерпретатору в качестве аргумента скрипта.5455> **Примечание**56>57> Эту опцию нельзя использовать со встроенными модулями и модулями расширения, написанными на C, поскольку у них нет файлов модулей Python. Однако её можно использовать для предварительно скомпилированных модулей, даже если исходный файл недоступен.5859Если эта опция указана, первый элемент [`sys.argv`](https://python-all.ru/3.5/library/sys.html#sys.argv) будет содержать полный путь к файлу модуля (пока файл модуля находится, первый элемент будет установлен в `"-m"`). Как и в случае с опцией [`-c`](https://python-all.ru/3.5/using/cmdline.html#cmdoption-c), текущий каталог будет добавлен в начало [`sys.path`](https://python-all.ru/3.5/library/sys.html#sys.path).6061Многие модули стандартной библиотеки содержат код, который вызывается при их выполнении в качестве скрипта. Примером может служить модуль [`timeit`](https://python-all.ru/3.5/library/timeit.html#module-timeit):6263```sh64python -mtimeit -s 'setup here' 'benchmarked code here'65python -mtimeit -h # подробнее66```6768> **См. также**69>70> **[`runpy.run_module()`](https://python-all.ru/3.5/library/runpy.html#runpy.run_module)**71>72> Эквивалентная функциональность, доступная напрямую из кода Python73>74> [**PEP 338**](https://python-all.ru/3.5/using/cmdline.html) – Выполнение модулей как сценариев7576Изменено в версии 3.1: Укажите имя пакета, чтобы запустить подмодуль `__main__`.7778Изменено в версии 3.4: также поддерживаются пространственные пакеты7980#### `-`8182Читает команды из стандартного ввода ([`sys.stdin`](https://python-all.ru/3.5/library/sys.html#sys.stdin)). Если стандартный ввод является терминалом, подразумевается [`-i`](https://python-all.ru/3.5/using/cmdline.html#cmdoption-i).8384Если указана эта опция, первым элементом [`sys.argv`](https://python-all.ru/3.5/library/sys.html#sys.argv) будет `"-"`, а текущий каталог будет добавлен в начало [`sys.path`](https://python-all.ru/3.5/library/sys.html#sys.path).8586#### `<script>`8788Выполняет код Python, содержащийся в *скрипте*, который должен быть файловым путем (абсолютным или относительным), указывающим на файл Python, каталог с файлом `__main__.py` или ZIP-файл, содержащий файл `__main__.py`.8990Если указана эта опция, первым элементом [`sys.argv`](https://python-all.ru/3.5/library/sys.html#sys.argv) будет имя скрипта, заданное в командной строке.9192Если имя скрипта указывает непосредственно на файл Python, каталог, содержащий этот файл, добавляется в начало [`sys.path`](https://python-all.ru/3.5/library/sys.html#sys.path), а сам файл выполняется как модуль [`__main__`](https://python-all.ru/3.5/library/__main__.html#module-__main__).9394Если имя скрипта ссылается на каталог или ZIP-файл, имя скрипта добавляется в начало [`sys.path`](https://python-all.ru/3.5/library/sys.html#sys.path), а файл `__main__.py` в этом расположении выполняется как модуль [`__main__`](https://python-all.ru/3.5/library/__main__.html#module-__main__).9596> **См. также**97>98> **[`runpy.run_path()`](https://python-all.ru/3.5/library/runpy.html#runpy.run_path)**99>100> Эквивалентная функциональность, доступная напрямую из кода Python101102Если не указана опция интерфейса, подразумевается [`-i`](https://python-all.ru/3.5/using/cmdline.html#cmdoption-i), `sys.argv[0]` является пустой строкой (`""`), а текущий каталог будет добавлен в начало [`sys.path`](https://python-all.ru/3.5/library/sys.html#sys.path). Кроме того, автодополнение по табуляции и редактирование истории автоматически включаются, если это доступно на вашей платформе (см. [конфигурацию Readline](https://python-all.ru/3.5/library/site.html#rlcompleter-config)).103104> **См. также**105>106> [Запуск интерпретатора](https://python-all.ru/3.5/tutorial/interpreter.html#tut-invoking)107108Изменено в версии 3.4: Автоматическое включение автодополнения по табуляции и редактирования истории.109110### 1.1.2. Общие параметры111112#### `-?`113114#### `-h`115116#### `--help`117118Выводит краткое описание всех параметров командной строки.119120#### `-V`121122#### `--version`123124Выводит номер версии Python и завершает работу. Пример вывода:125126```sh127Python 3.0128```129130### 1.1.3. Прочие параметры131132#### `-b`133134Выдаёт предупреждение при сравнении [`bytes`](https://python-all.ru/3.5/library/functions.html#bytes) или [`bytearray`](https://python-all.ru/3.5/library/functions.html#bytearray) с [`str`](https://python-all.ru/3.5/library/stdtypes.html#str) или [`bytes`](https://python-all.ru/3.5/library/functions.html#bytes) с [`int`](https://python-all.ru/3.5/library/functions.html#int). Выдаёт ошибку, если параметр указан дважды (`-bb`).135136Изменено в версии 3.5: Влияет на сравнения [`bytes`](https://python-all.ru/3.5/library/functions.html#bytes) с [`int`](https://python-all.ru/3.5/library/functions.html#int).137138#### `-B`139140Если указан, Python не будет пытаться записывать файлы `.pyc` при импорте исходных модулей. См. также [`PYTHONDONTWRITEBYTECODE`](https://python-all.ru/3.5/using/cmdline.html#envvar-PYTHONDONTWRITEBYTECODE).141142#### `-d`143144Включить отладочный вывод парсера (только для волшебников, в зависимости от опций компиляции).\\nСм. также [`PYTHONDEBUG`](https://python-all.ru/3.5/using/cmdline.html#envvar-PYTHONDEBUG).145146#### `-E`147148Игнорировать все переменные окружения `PYTHON*`, например [`PYTHONPATH`](https://python-all.ru/3.5/using/cmdline.html#envvar-PYTHONPATH) и [`PYTHONHOME`](https://python-all.ru/3.5/using/cmdline.html#envvar-PYTHONHOME), которые могут быть установлены.149150#### `-i`151152Когда в качестве первого аргумента передан сценарий или используется опция [`-c`](https://python-all.ru/3.5/using/cmdline.html#cmdoption-c), интерактивный режим запускается после выполнения сценария или команды, даже если [`sys.stdin`](https://python-all.ru/3.5/library/sys.html#sys.stdin) не выглядит как терминал. Файл [`PYTHONSTARTUP`](https://python-all.ru/3.5/using/cmdline.html#envvar-PYTHONSTARTUP) при этом не читается.153154Это может быть полезно для проверки глобальных переменных или трассировки стека, когда скрипт вызывает исключение. См. также [`PYTHONINSPECT`](https://python-all.ru/3.5/using/cmdline.html#envvar-PYTHONINSPECT).155156#### `-I`157158Запускает Python в изолированном режиме. Это также подразумевает -E и -s. В изолированном режиме [`sys.path`](https://python-all.ru/3.5/library/sys.html#sys.path) не содержит ни каталога скрипта, ни каталога site-packages пользователя. Все переменные окружения `PYTHON*` также игнорируются. Могут быть наложены дополнительные ограничения, чтобы предотвратить внедрение пользователем вредоносного кода.159160Новое в версии 3.4.161162#### `-O`163164Включить базовые оптимизации. См. также [`PYTHONOPTIMIZE`](https://python-all.ru/3.5/using/cmdline.html#envvar-PYTHONOPTIMIZE).165166#### `-OO`167168Отбрасывать строки документации в дополнение к оптимизациям [`-O`](https://python-all.ru/3.5/using/cmdline.html#cmdoption-o).169170#### `-q`171172Не выводить сообщения об авторских правах и версии, даже в интерактивном режиме.173174Новое в версии 3.2.175176#### `-R`177178Сохранено для совместимости. Начиная с Python 3.3, рандомизация хешей включена по умолчанию.179180В предыдущих версиях Python этот параметр включает рандомизацию хэшей, так что значения [`__hash__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__hash__) для str, bytes и datetime «солятся» непредсказуемым случайным значением. Хотя они остаются постоянными в пределах одного процесса Python, они непредсказуемы при повторных запусках Python.181182Хэш-рандомизация предназначена для защиты от отказа в обслуживании, вызванного тщательно подобранными входными данными, которые используют наихудшую производительность построения словаря (сложность O(n²)). Подробнее см. [http://www.ocert.org/advisories/ocert-2011-003.html](https://python-all.ru/3.5/using/cmdline.html).183184[`PYTHONHASHSEED`](https://python-all.ru/3.5/using/cmdline.html#envvar-PYTHONHASHSEED) позволяет задать фиксированное значение для секрета начального значения хеша.185186Новое в версии 3.2.3.187188#### `-s`189190Не добавляет [`user site-packages directory`](https://python-all.ru/3.5/library/site.html#site.USER_SITE) в [`sys.path`](https://python-all.ru/3.5/library/sys.html#sys.path).191192> **См. также**193>194> [**PEP 370**](https://python-all.ru/3.5/using/cmdline.html) – Каталог site-packages для каждого пользователя195196#### `-S`197198Отключает импорт модуля [`site`](https://python-all.ru/3.5/library/site.html#module-site) и связанные с ним site-зависимые манипуляции с [`sys.path`](https://python-all.ru/3.5/library/sys.html#sys.path). Также отключает эти манипуляции, если [`site`](https://python-all.ru/3.5/library/site.html#module-site) явно импортирован позже (для их выполнения следует вызвать [`site.main()`](https://python-all.ru/3.5/library/site.html#site.main)).199200#### `-u`201202Принудительно сделать двоичный слой потоков stdout и stderr (доступный\\nкак их атрибут `buffer`) небуферизованным. Текстовый слой ввода-вывода\\nпо-прежнему будет буферизован построчно при выводе в консоль или\\nпоблочно при перенаправлении в неинтерактивный файл.203204См. также [`PYTHONUNBUFFERED`](https://python-all.ru/3.5/using/cmdline.html#envvar-PYTHONUNBUFFERED).205206#### `-v`207208Выводит сообщение при каждой инициализации модуля, показывая место (имя файла или встроенный модуль), из которого он загружается. При указании дважды (`-vv`) выводит сообщение для каждого файла, проверяемого при поиске модуля. Также предоставляет информацию об очистке модуля при завершении. См. также [`PYTHONVERBOSE`](https://python-all.ru/3.5/using/cmdline.html#envvar-PYTHONVERBOSE).209210#### `-W arg`211212Управление предупреждениями. Механизм предупреждений Python по умолчанию выводит предупреждения в [`sys.stderr`](https://python-all.ru/3.5/library/sys.html#sys.stderr). Типичное предупреждение имеет следующий вид:213214```sh215file:line: category: message216```217218По умолчанию каждое предупреждение выводится один раз для каждой строки исходного кода, в которой оно возникает. Этот параметр управляет частотой вывода предупреждений.219220Может быть указано несколько параметров [`-W`](https://python-all.ru/3.5/using/cmdline.html#cmdoption-w); если предупреждение соответствует более чем одному параметру, выполняется действие последнего подходящего параметра. Недопустимые параметры [`-W`](https://python-all.ru/3.5/using/cmdline.html#cmdoption-w) игнорируются (однако при выдаче первого предупреждения выводится сообщение о недопустимых параметрах).221222Предупреждениями также можно управлять из программы Python с помощью\\nмодуля [`warnings`](https://python-all.ru/3.5/library/warnings.html#module-warnings).223224Простейшая форма аргумента – одна из следующих строк действий (или\\nуникальное сокращение):225226**`ignore`**227228Игнорировать все предупреждения.229230**`default`**231232Явно запросить поведение по умолчанию (вывод каждого предупреждения один раз на\\nстроку исходного кода).233234**`all`**235236Выводить предупреждение при каждом его появлении (это может породить много сообщений, если\\nпредупреждение вызывается многократно для одной и той же строки, например, внутри\\nцикла).237238**`module`**239240Выводить каждое предупреждение только при первом появлении в каждом модуле.241242**`once`**243244Выводить каждое предупреждение только при первом появлении в программе.245246**`error`**247248Возбуждать исключение вместо вывода предупреждения.249250Полная форма аргумента:251252```sh253action:message:category:module:line254```255256Здесь *action* (действие) как описано выше, но применяется только к сообщениям, соответствующим\\nостальным полям. Пустые поля соответствуют любым значениям; конечные пустые поля можно\\nопускать. Поле *message* соответствует началу выводимого сообщения\\nпредупреждения; сравнение нечувствительно к регистру. Поле *category* соответствует\\nкатегории предупреждения. Это должно быть имя класса; при сравнении проверяется,\\nявляется ли фактическая категория предупреждения сообщения подклассом указанной\\nкатегории. Необходимо указывать полное имя класса. Поле *module* соответствует\\n(полному) имени модуля; сравнение чувствительно к регистру. Поле *line*\\nсоответствует номеру строки; ноль соответствует всем номерам строк и, таким образом,\\nэквивалентен отсутствующему номеру строки.257258> **См. также**259>260> [`warnings`](https://python-all.ru/3.5/library/warnings.html#module-warnings) – модуль warnings261>262> [**PEP 230**](https://python-all.ru/3.5/using/cmdline.html) – инфраструктура предупреждений263>264> [`PYTHONWARNINGS`](https://python-all.ru/3.5/using/cmdline.html#envvar-PYTHONWARNINGS)265266#### `-x`267268Пропускает первую строку исходного файла, позволяя использовать не-юниксовые формы `#!cmd`. Это предназначено только для специфического хака DOS.269270> **Примечание**271>272> Номера строк в сообщениях об ошибках будут смещены на единицу.273274#### `-X`275276Зарезервировано для различных опций, специфичных для реализации. В настоящее время CPython определяет следующие возможные значения:277278- `-X faulthandler` для включения [`faulthandler`](https://python-all.ru/3.5/library/faulthandler.html#module-faulthandler);279- `-X showrefcount` для вывода общего количества ссылок и блоков памяти (работает только в отладочных сборках);280- `-X tracemalloc` для начала трассировки выделений памяти Python с помощью модуля [`tracemalloc`](https://python-all.ru/3.5/library/tracemalloc.html#module-tracemalloc). По умолчанию в обратной трассировке сохраняется только самый последний кадр. Используйте `-X tracemalloc=NFRAME`, чтобы начать трассировку с лимитом обратной трассировки в *NFRAME* кадров. Дополнительную информацию см. в [`tracemalloc.start()`](https://python-all.ru/3.5/library/tracemalloc.html#tracemalloc.start).281282Он также позволяет передавать произвольные значения и извлекать их через словарь [`sys._xoptions`](https://python-all.ru/3.5/library/sys.html#sys._xoptions).283284Изменено в версии 3.2: Теперь допускается передача [`-X`](https://python-all.ru/3.5/using/cmdline.html#id5) в CPython.285286Новое в версии 3.3: Параметр `-X faulthandler`.287288Новое в версии 3.4: Параметры `-X showrefcount` и `-X tracemalloc`.289290### 1.1.4. Параметры, которые не следует использовать291292#### `-J`293294Зарезервировано для [Jython](https://python-all.ru/3.5/using/cmdline.html).295296## 1.2. Переменные окружения297298Эти переменные окружения влияют на поведение Python, они обрабатываются до параметров командной строки, кроме -E или -I. Принято, что параметры командной строки переопределяют переменные окружения в случае конфликта.299300**`PYTHONHOME`**301302Изменяет расположение стандартных библиотек Python. По умолчанию библиотеки ищутся в `prefix/lib/pythonversion` и `exec_prefix/lib/pythonversion`, где `prefix` и `exec_prefix` – это каталоги, зависящие от установки; оба по умолчанию имеют значение `/usr/local`.303304Когда [`PYTHONHOME`](https://python-all.ru/3.5/using/cmdline.html#envvar-PYTHONHOME) установлен в один каталог, его значение заменяет оба `prefix` и `exec_prefix`. Чтобы указать для них разные значения, установите [`PYTHONHOME`](https://python-all.ru/3.5/using/cmdline.html#envvar-PYTHONHOME) в `prefix:exec_prefix`.305306**`PYTHONPATH`**307308Дополняет путь поиска модулей по умолчанию. Формат такой же, как у `PATH` оболочки: один или несколько путей к каталогам, разделённых [`os.pathsep`](https://python-all.ru/3.5/library/os.html#os.pathsep) (например, двоеточиями в Unix или точкой с запятой в Windows). Несуществующие каталоги игнорируются без предупреждения.309310В дополнение к обычным каталогам, отдельные записи [`PYTHONPATH`](https://python-all.ru/3.5/using/cmdline.html#envvar-PYTHONPATH) могут ссылаться на zip-файлы, содержащие чистые модули Python (в исходной или скомпилированной форме). Модули расширений не могут быть импортированы из zip-файлов.311312Путь поиска по умолчанию зависит от установки, но обычно начинается с `prefix/lib/pythonversion` (см. [`PYTHONHOME`](https://python-all.ru/3.5/using/cmdline.html#envvar-PYTHONHOME) выше). Он *всегда* добавляется к [`PYTHONPATH`](https://python-all.ru/3.5/using/cmdline.html#envvar-PYTHONPATH).313314Дополнительный каталог будет вставлен в путь поиска перед [`PYTHONPATH`](https://python-all.ru/3.5/using/cmdline.html#envvar-PYTHONPATH), как описано выше в разделе [Параметры интерфейса](https://python-all.ru/3.5/using/cmdline.html#using-on-interface-options). Путь поиска можно изменять из программы Python как переменную [`sys.path`](https://python-all.ru/3.5/library/sys.html#sys.path).315316**`PYTHONSTARTUP`**317318Если это имя читаемого файла, команды Python из этого файла выполняются перед отображением первого приглашения в интерактивном режиме. Файл выполняется в том же пространстве имён, что и интерактивные команды, поэтому определённые или импортированные в нём объекты могут использоваться без уточнения в интерактивном сеансе. Также в этом файле можно изменить приглашения [`sys.ps1`](https://python-all.ru/3.5/library/sys.html#sys.ps1) и [`sys.ps2`](https://python-all.ru/3.5/library/sys.html#sys.ps2) и хук [`sys.__interactivehook__`](https://python-all.ru/3.5/library/sys.html#sys.__interactivehook__).319320**`PYTHONOPTIMIZE`**321322Если эта переменная установлена в непустую строку, это эквивалентно указанию опции [`-O`](https://python-all.ru/3.5/using/cmdline.html#cmdoption-o). Если установлено целое число, это эквивалентно указанию [`-O`](https://python-all.ru/3.5/using/cmdline.html#cmdoption-o) несколько раз.323324**`PYTHONDEBUG`**325326Если эта переменная установлена в непустую строку, это эквивалентно указанию опции [`-d`](https://python-all.ru/3.5/using/cmdline.html#cmdoption-d). Если установлено целое число, это эквивалентно указанию [`-d`](https://python-all.ru/3.5/using/cmdline.html#cmdoption-d) несколько раз.327328**`PYTHONINSPECT`**329330Если эта переменная установлена в непустую строку, это эквивалентно указанию опции [`-i`](https://python-all.ru/3.5/using/cmdline.html#cmdoption-i).331332Эта переменная также может быть изменена кодом Python с помощью [`os.environ`](https://python-all.ru/3.5/library/os.html#os.environ), чтобы принудительно включить режим инспектирования при завершении программы.333334**`PYTHONUNBUFFERED`**335336Если эта переменная установлена в непустую строку, это эквивалентно указанию опции [`-u`](https://python-all.ru/3.5/using/cmdline.html#cmdoption-u).337338**`PYTHONVERBOSE`**339340Если эта переменная установлена в непустую строку, это эквивалентно указанию опции [`-v`](https://python-all.ru/3.5/using/cmdline.html#id4). Если установлено целое число, это эквивалентно указанию [`-v`](https://python-all.ru/3.5/using/cmdline.html#id4) несколько раз.341342**`PYTHONCASEOK`**343344Если переменная установлена, Python игнорирует регистр в операторах [`import`](https://python-all.ru/3.5/reference/simple_stmts.html#import). Это работает только в Windows и OS X.345346**`PYTHONDONTWRITEBYTECODE`**347348Если эта переменная установлена в непустую строку, Python не будет пытаться записывать файлы `.pyc` при импорте исходных модулей. Это эквивалентно указанию опции [`-B`](https://python-all.ru/3.5/using/cmdline.html#id1).349350**`PYTHONHASHSEED`**351352Если эта переменная не установлена или установлена в `random`, для инициализации хэшей объектов str, bytes и datetime используется случайное значение.353354Если [`PYTHONHASHSEED`](https://python-all.ru/3.5/using/cmdline.html#envvar-PYTHONHASHSEED) установлено в целое число, оно используется как фиксированное начальное значение для генерации hash() для типов, охваченных рандомизацией хешей.355356Его цель – обеспечить воспроизводимое хеширование, например, для самотестирования самого интерпретатора, или чтобы позволить кластеру процессов Python обмениваться значениями хешей.357358Целое число должно быть десятичным числом в диапазоне \[0, 4294967295\]. Указание значения 0 отключит рандомизацию хешей.359360Новое в версии 3.2.3.361362**`PYTHONIOENCODING`**363364Если эта переменная установлена до запуска интерпретатора, она переопределяет кодировку, используемую для stdin/stdout/stderr, в синтаксисе `encodingname:errorhandler`. Обе части `encodingname` и `:errorhandler` необязательны и имеют то же значение, что и в [`str.encode()`](https://python-all.ru/3.5/library/stdtypes.html#str.encode).365366Для stderr часть `:errorhandler` игнорируется; обработчик всегда будет `'backslashreplace'`.367368Изменено в версии 3.4: Часть `encodingname` теперь необязательна.369370**`PYTHONNOUSERSITE`**371372Если эта переменная установлена, Python не будет добавлять [`user site-packages directory`](https://python-all.ru/3.5/library/site.html#site.USER_SITE) в [`sys.path`](https://python-all.ru/3.5/library/sys.html#sys.path).373374> **См. также**375>376> [**PEP 370**](https://python-all.ru/3.5/using/cmdline.html) – Каталог site-packages для каждого пользователя377378**`PYTHONUSERBASE`**379380Определяет [`user base directory`](https://python-all.ru/3.5/library/site.html#site.USER_BASE), который используется для вычисления пути [`user site-packages directory`](https://python-all.ru/3.5/library/site.html#site.USER_SITE) и [путей установки Distutils](https://python-all.ru/3.5/install/index.html#inst-alt-install-user) для `python setup.py install --user`.381382> **См. также**383>384> [**PEP 370**](https://python-all.ru/3.5/using/cmdline.html) – Каталог site-packages для каждого пользователя385386**`PYTHONEXECUTABLE`**387388Если эта переменная окружения установлена, `sys.argv[0]` будет установлено в её значение вместо значения, полученного через C runtime. Работает только в Mac OS X.389390**`PYTHONWARNINGS`**391392Это эквивалентно опции [`-W`](https://python-all.ru/3.5/using/cmdline.html#cmdoption-w). Если присвоена строка, разделённая\\nзапятыми, это эквивалентно указанию [`-W`](https://python-all.ru/3.5/using/cmdline.html#cmdoption-w) несколько\\nраз.393394**`PYTHONFAULTHANDLER`**395396Если эта переменная окружения установлена в непустую строку, [`faulthandler.enable()`](https://python-all.ru/3.5/library/faulthandler.html#faulthandler.enable) вызывается при запуске: устанавливается обработчик сигналов `SIGSEGV`, `SIGFPE`, `SIGABRT`, `SIGBUS` и `SIGILL` для дампа обратной трассировки Python. Это эквивалентно параметру [`-X`](https://python-all.ru/3.5/using/cmdline.html#id5) `faulthandler`.397398Новое в версии 3.3.399400**`PYTHONTRACEMALLOC`**401402Если эта переменная окружения установлена в непустую строку, начинается трассировка выделений памяти Python с помощью модуля [`tracemalloc`](https://python-all.ru/3.5/library/tracemalloc.html#module-tracemalloc). Значение переменной – максимальное количество кадров, сохраняемых в обратной трассировке. Например, `PYTHONTRACEMALLOC=1` сохраняет только самый последний кадр. Дополнительную информацию см. в [`tracemalloc.start()`](https://python-all.ru/3.5/library/tracemalloc.html#tracemalloc.start).403404Новое в версии 3.4.405406**`PYTHONASYNCIODEBUG`**407408Если эта переменная окружения установлена в непустую строку, включает [режим отладки](https://python-all.ru/3.5/library/asyncio-dev.html#asyncio-debug-mode) модуля [`asyncio`](https://python-all.ru/3.5/library/asyncio.html#module-asyncio).409410Новое в версии 3.4.411412### 1.2.1. Переменные режима отладки413414Установка этих переменных работает только в отладочной сборке Python, то есть если Python был сконфигурирован с параметром сборки `--with-pydebug`.415416**`PYTHONTHREADDEBUG`**417418Если установлено, Python будет выводить отладочную информацию о потоках.419420**`PYTHONDUMPREFS`**421422Если установлено, Python будет выгружать объекты и счетчики ссылок, все еще живые после завершения работы интерпретатора.423424**`PYTHONMALLOCSTATS`**425426Если установлено, Python будет выводить статистику распределения памяти каждый раз при создании новой арены объектов, а также при завершении работы.427