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

cmdline.md

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

1> **Источник:** https://python-all.ru/2.7/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/2.7/reference/introduction.html#implementations).1213## 1.1. Командная строка1415При запуске Python можно указать любые из этих опций:1617```sh18python [-bBdEiOQsRStuUvVWxX3?] [-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/2.7/library/sys.html#sys.argv) – первый элемент (индекс ноль, `sys.argv[0]`) является строкой, указывающей на источник программы.4041#### `-c <command>`4243Выполняет код Python, указанный в *command*. *command* может содержать одну или несколько инструкций, разделённых переводами строк; начальные пробелы, как и в обычном коде модуля, имеют значение.4445Если указана эта опция, первый элемент [`sys.argv`](https://python-all.ru/2.7/library/sys.html#sys.argv) будет равен `"-c"`, а текущий каталог будет добавлен в начало [`sys.path`](https://python-all.ru/2.7/library/sys.html#sys.path) (что позволяет импортировать модули из этого каталога как модули верхнего уровня).4647#### `-m <module-name>`4849Ищет [`sys.path`](https://python-all.ru/2.7/library/sys.html#sys.path) указанный модуль и выполняет его содержимое как модуль [`__main__`](https://python-all.ru/2.7/library/__main__.html#module-__main__).5051Поскольку аргумент – это имя *модуля*, расширение файла указывать не следует (`.py`). `module-name` должно быть допустимым именем модуля Python, но реализация может не всегда это проверять (например, может разрешить использовать имя, содержащее дефис).5253Имена пакетов также допускаются. Когда вместо обычного модуля указывается имя пакета, интерпретатор выполнит `<pkg>.__main__` как главный модуль. Такое поведение намеренно аналогично обработке каталогов и zip-файлов, передаваемых интерпретатору в качестве аргумента скрипта.5455> **Примечание**56>57> Эту опцию нельзя использовать со встроенными модулями и модулями расширения, написанными на C, поскольку у них нет файлов модулей Python. Однако её можно использовать для предварительно скомпилированных модулей, даже если исходный файл недоступен.5859Если указан этот параметр, первым элементом [`sys.argv`](https://python-all.ru/2.7/library/sys.html#sys.argv) будет полный путь к файлу модуля. Как и в случае с параметром [`-c`](https://python-all.ru/2.7/using/cmdline.html#cmdoption-c), текущий каталог будет добавлен в начало [`sys.path`](https://python-all.ru/2.7/library/sys.html#sys.path).6061Многие модули стандартной библиотеки содержат код, который вызывается при их выполнении в качестве скрипта. Примером может служить модуль [`timeit`](https://python-all.ru/2.7/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/2.7/library/runpy.html#runpy.run_module)**71>72> Эквивалентная функциональность, доступная напрямую из кода Python73>74> [**PEP 338**](https://python-all.ru/2.7/using/cmdline.html) – Выполнение модулей как сценариев7576Новое в версии 2.4.7778Изменено в версии 2.5: Теперь именованный модуль может находиться внутри пакета.7980Изменено в версии 2.7: Указывайте имя пакета для запуска подмодуля `__main__`. sys.argv\[0\] теперь устанавливается в `"-m"` при поиске модуля (ранее он некорректно устанавливался в `"-c"`).8182#### `-`8384Читает команды из стандартного ввода ([`sys.stdin`](https://python-all.ru/2.7/library/sys.html#sys.stdin)). Если стандартный ввод является терминалом, подразумевается [`-i`](https://python-all.ru/2.7/using/cmdline.html#cmdoption-i).8586Если указана эта опция, первым элементом [`sys.argv`](https://python-all.ru/2.7/library/sys.html#sys.argv) будет `"-"`, а текущий каталог будет добавлен в начало [`sys.path`](https://python-all.ru/2.7/library/sys.html#sys.path).8788> **См. также**89>90> **[`runpy.run_path()`](https://python-all.ru/2.7/library/runpy.html#runpy.run_path)**91>92> Эквивалентная функциональность, доступная напрямую из кода Python9394#### `<script>`9596Выполняет код Python, содержащийся в *скрипте*, который должен быть файловым путем (абсолютным или относительным), указывающим на файл Python, каталог с файлом `__main__.py` или ZIP-файл, содержащий файл `__main__.py`.9798Если указана эта опция, первым элементом [`sys.argv`](https://python-all.ru/2.7/library/sys.html#sys.argv) будет имя скрипта, заданное в командной строке.99100Если имя скрипта указывает непосредственно на файл Python, каталог, содержащий этот файл, добавляется в начало [`sys.path`](https://python-all.ru/2.7/library/sys.html#sys.path), а сам файл выполняется как модуль [`__main__`](https://python-all.ru/2.7/library/__main__.html#module-__main__).101102Если имя скрипта ссылается на каталог или ZIP-файл, имя скрипта добавляется в начало [`sys.path`](https://python-all.ru/2.7/library/sys.html#sys.path), а файл `__main__.py` в этом расположении выполняется как модуль [`__main__`](https://python-all.ru/2.7/library/__main__.html#module-__main__).103104Изменено в версии 2.5: Каталоги и zip-файлы, содержащие файл `__main__.py` на верхнем уровне, теперь считаются допустимыми скриптами Python.105106Если параметр интерфейса не указан, подразумевается [`-i`](https://python-all.ru/2.7/using/cmdline.html#cmdoption-i), `sys.argv[0]` – пустая строка (`""`), и текущий каталог будет добавлен в начало [`sys.path`](https://python-all.ru/2.7/library/sys.html#sys.path).107108> **См. также**109>110> [Запуск интерпретатора](https://python-all.ru/2.7/tutorial/interpreter.html#tut-invoking)111112### 1.1.2. Общие опции113114#### `-?`115116#### `-h`117118#### `--help`119120Выводит краткое описание всех параметров командной строки.121122Изменено в версии 2.5: Вариант `--help`.123124#### `-V`125126#### `--version`127128Выводит номер версии Python и завершает работу. Пример вывода:129130```sh131Python 2.5.1132```133134Изменено в версии 2.5: Вариант `--version`.135136### 1.1.3. Прочие опции137138#### `-b`139140Выдавать предупреждение при сравнении [`unicode`](https://python-all.ru/2.7/library/functions.html#unicode) с [`bytearray`](https://python-all.ru/2.7/library/functions.html#bytearray). Выдавать ошибку, если параметр указан дважды (`-bb`).141142Обратите внимание: в отличие от соответствующего флага Python 3.x, этот параметр **не** будет выдавать предупреждения для сравнений между [`str`](https://python-all.ru/2.7/library/functions.html#str) и [`unicode`](https://python-all.ru/2.7/library/functions.html#unicode). Вместо этого экземпляр `str` будет неявно декодирован в `unicode` и будет использовано сравнение Unicode.143144Новое в версии 2.6.145146#### `-B`147148Если указано, Python не будет пытаться записывать файлы `.pyc` или `.pyo` при импорте исходных модулей. См. также [`PYTHONDONTWRITEBYTECODE`](https://python-all.ru/2.7/using/cmdline.html#envvar-PYTHONDONTWRITEBYTECODE).149150Новое в версии 2.6.151152#### `-d`153154Включить отладочный вывод парсера (только для волшебников, в зависимости от опций компиляции).\\nСм. также [`PYTHONDEBUG`](https://python-all.ru/2.7/using/cmdline.html#envvar-PYTHONDEBUG).155156#### `-E`157158Игнорировать все переменные окружения `PYTHON*`, например [`PYTHONPATH`](https://python-all.ru/2.7/using/cmdline.html#envvar-PYTHONPATH) и [`PYTHONHOME`](https://python-all.ru/2.7/using/cmdline.html#envvar-PYTHONHOME), которые могут быть установлены.159160Новое в версии 2.2.161162#### `-i`163164Когда в качестве первого аргумента передан сценарий или используется опция [`-c`](https://python-all.ru/2.7/using/cmdline.html#cmdoption-c), интерактивный режим запускается после выполнения сценария или команды, даже если [`sys.stdin`](https://python-all.ru/2.7/library/sys.html#sys.stdin) не выглядит как терминал. Файл [`PYTHONSTARTUP`](https://python-all.ru/2.7/using/cmdline.html#envvar-PYTHONSTARTUP) при этом не читается.165166Это может быть полезно для проверки глобальных переменных или трассировки стека, когда скрипт вызывает исключение. См. также [`PYTHONINSPECT`](https://python-all.ru/2.7/using/cmdline.html#envvar-PYTHONINSPECT).167168#### `-O`169170Включить базовые оптимизации. Это изменяет расширение имени файла для скомпилированных ([байт-код](https://python-all.ru/2.7/glossary.html#term-bytecode)) файлов с `.pyc` на `.pyo`. См. также [`PYTHONOPTIMIZE`](https://python-all.ru/2.7/using/cmdline.html#envvar-PYTHONOPTIMIZE).171172#### `-OO`173174Отбрасывать строки документации в дополнение к оптимизациям [`-O`](https://python-all.ru/2.7/using/cmdline.html#cmdoption-o).175176#### `-Q <arg>`177178Управление делением. Аргумент должен быть одним из следующих:179180**`old`**181182деление int/int и long/long возвращает int или long (*по умолчанию*)183184**`new`**185186новая семантика деления, т.е. деление int/int и long/long возвращает float187188**`warn`**189190старая семантика деления с предупреждением для int/int и long/long191192**`warnall`**193194старая семантика деления с предупреждением для всех случаев использования оператора деления195196> **См. также**197>198> **`Tools/scripts/fixdiv.py`**199>200> за использование `warnall`201>202> [**PEP 238**](https://python-all.ru/2.7/using/cmdline.html) – Изменение оператора деления203204#### `-R`205206Включить рандомизацию хешей, чтобы значения [`__hash__()`](https://python-all.ru/2.7/reference/datamodel.html#object.__hash__) объектов str, bytes и datetime «солились» непредсказуемым случайным значением. Хотя они остаются постоянными в рамках одного процесса Python, они непредсказуемы между последовательными запусками Python.207208Это предназначено для защиты от отказа в обслуживании, вызванного специально подобранными входными данными, которые эксплуатируют наихудшую производительность построения словаря со сложностью O(n^2). См. [http://www.ocert.org/advisories/ocert-2011-003.html](https://python-all.ru/2.7/using/cmdline.html) для подробностей.209210Изменение хэш-значений влияет на порядок, в котором ключи извлекаются из словаря. Хотя Python никогда не давал гарантий относительно этого порядка (и он обычно различается между 32-битными и 64-битными сборками), достаточно много реального кода неявно полагается на это негарантированное поведение, поэтому рандомизация отключена по умолчанию.211212См. также [`PYTHONHASHSEED`](https://python-all.ru/2.7/using/cmdline.html#envvar-PYTHONHASHSEED).213214Новое в версии 2.6.8.215216#### `-s`217218Не добавляет [`user site-packages directory`](https://python-all.ru/2.7/library/site.html#site.USER_SITE) в [`sys.path`](https://python-all.ru/2.7/library/sys.html#sys.path).219220Новое в версии 2.6.221222> **См. также**223>224> [**PEP 370**](https://python-all.ru/2.7/using/cmdline.html) – Каталог site-packages для каждого пользователя225226#### `-S`227228Отключить импорт модуля [`site`](https://python-all.ru/2.7/library/site.html#module-site) и зависящие от сайта манипуляции с [`sys.path`](https://python-all.ru/2.7/library/sys.html#sys.path), которые он за собой влечёт.229230#### `-t`231232Выдавать предупреждение, когда в исходном файле для отступов смешиваются табуляция и пробелы таким образом, что это зависит от ширины табуляции в пробелах. Выдавать ошибку, если параметр указан дважды (`-tt`).233234#### `-u`235236Принудительно делает stdin, stdout и stderr полностью небуферизованными. В системах, где это имеет значение, также переводит stdin, stdout и stderr в двоичный режим.237238Обратите внимание: внутренняя буферизация в [`file.readlines()`](https://python-all.ru/2.7/library/stdtypes.html#file.readlines) и [объектах файлов](https://python-all.ru/2.7/library/stdtypes.html#bltin-file-objects) (`for line in sys.stdin`) не зависит от этого параметра. Чтобы обойти это, используйте [`file.readline()`](https://python-all.ru/2.7/library/stdtypes.html#file.readline) внутри цикла `while 1:`.239240См. также [`PYTHONUNBUFFERED`](https://python-all.ru/2.7/using/cmdline.html#envvar-PYTHONUNBUFFERED).241242#### `-v`243244Выводит сообщение при каждой инициализации модуля, показывая место (имя файла или встроенный модуль), из которого он загружается. При указании дважды (`-vv`) выводит сообщение для каждого файла, проверяемого при поиске модуля. Также предоставляет информацию об очистке модуля при завершении. См. также [`PYTHONVERBOSE`](https://python-all.ru/2.7/using/cmdline.html#envvar-PYTHONVERBOSE).245246#### `-W arg`247248Управление предупреждениями. Механизм предупреждений Python по умолчанию выводит предупреждения в [`sys.stderr`](https://python-all.ru/2.7/library/sys.html#sys.stderr). Типичное предупреждение имеет следующий вид:249250```sh251file:line: category: message252```253254По умолчанию каждое предупреждение выводится один раз для каждой строки исходного кода, в которой оно возникает. Этот параметр управляет частотой вывода предупреждений.255256Может быть указано несколько параметров [`-W`](https://python-all.ru/2.7/using/cmdline.html#cmdoption-w); если предупреждение соответствует более чем одному параметру, выполняется действие последнего подходящего параметра. Недопустимые параметры [`-W`](https://python-all.ru/2.7/using/cmdline.html#cmdoption-w) игнорируются (однако при выдаче первого предупреждения выводится сообщение о недопустимых параметрах).257258Начиная с Python 2.7, [`DeprecationWarning`](https://python-all.ru/2.7/library/exceptions.html#exceptions.DeprecationWarning) и его производные игнорируются по умолчанию. Параметр `-Wd` можно использовать для их повторного включения.259260Предупреждениями также можно управлять из программы Python с помощью\\nмодуля [`warnings`](https://python-all.ru/2.7/library/warnings.html#module-warnings).261262Простейшая форма аргумента – одна из следующих строк действия (или их однозначное сокращение) сама по себе:263264**`ignore`**265266Игнорировать все предупреждения.267268**`default`**269270Явно запросить поведение по умолчанию (вывод каждого предупреждения один раз на\\nстроку исходного кода).271272**`all`**273274Выводить предупреждение при каждом его появлении (это может породить много сообщений, если\\nпредупреждение вызывается многократно для одной и той же строки, например, внутри\\nцикла).275276**`module`**277278Выводить каждое предупреждение только при первом появлении в каждом модуле.279280**`once`**281282Выводить каждое предупреждение только при первом появлении в программе.283284**`error`**285286Возбуждать исключение вместо вывода предупреждения.287288Полная форма аргумента:289290```sh291action:message:category:module:line292```293294Здесь *action* (действие) как описано выше, но применяется только к сообщениям, соответствующим\\nостальным полям. Пустые поля соответствуют любым значениям; конечные пустые поля можно\\nопускать. Поле *message* соответствует началу выводимого сообщения\\nпредупреждения; сравнение нечувствительно к регистру. Поле *category* соответствует\\nкатегории предупреждения. Это должно быть имя класса; при сравнении проверяется,\\nявляется ли фактическая категория предупреждения сообщения подклассом указанной\\nкатегории. Необходимо указывать полное имя класса. Поле *module* соответствует\\n(полному) имени модуля; сравнение чувствительно к регистру. Поле *line*\\nсоответствует номеру строки; ноль соответствует всем номерам строк и, таким образом,\\nэквивалентен отсутствующему номеру строки.295296> **См. также**297>298> [`warnings`](https://python-all.ru/2.7/library/warnings.html#module-warnings) – модуль warnings299>300> [**PEP 230**](https://python-all.ru/2.7/using/cmdline.html) – инфраструктура предупреждений301>302> [`PYTHONWARNINGS`](https://python-all.ru/2.7/using/cmdline.html#envvar-PYTHONWARNINGS)303304#### `-x`305306Пропускает первую строку исходного файла, позволяя использовать не-юниксовые формы `#!cmd`. Это предназначено только для специфического хака DOS.307308#### `-3`309310Предупреждать о возможных несовместимостях с Python 3.x, выдавая [`DeprecationWarning`](https://python-all.ru/2.7/library/exceptions.html#exceptions.DeprecationWarning) для возможностей, которые удалены или существенно изменены в Python 3 и не могут быть обнаружены с помощью статического анализа кода.311312Новое в версии 2.6.313314См. [Перенос кода Python 2 на Python 3](https://python-all.ru/2.7/howto/pyporting.html) для получения более подробной информации.315316### 1.1.4. Параметры, которые не стоит использовать317318#### `-J`319320Зарезервировано для [Jython](https://python-all.ru/2.7/using/cmdline.html).321322#### `-U`323324Преобразует все строковые литералы в Unicode глобально. Не поддавайтесь искушению использовать этот параметр – он, скорее всего, сломает ваш мир. Он также создаёт файлы `.pyc` с другим магическим числом, чем обычно. Вместо этого вы можете включить литералы Unicode на уровне модуля, используя:325326```sh327from __future__ import unicode_literals328```329330в начале файла. Подробнее см. [`__future__`](https://python-all.ru/2.7/library/__future__.html#module-__future__).331332#### `-X`333334Зарезервировано для использования альтернативными реализациями Python в собственных целях.335336## 1.2. Переменные окружения337338Эти переменные окружения влияют на поведение Python; они обрабатываются до запуска с флагами командной строки, кроме -E. Обычно флаги командной строки переопределяют переменные окружения в случае конфликта.339340**`PYTHONHOME`**341342Изменяет расположение стандартных библиотек Python. По умолчанию библиотеки ищутся в `prefix/lib/pythonversion` и `exec_prefix/lib/pythonversion`, где `prefix` и `exec_prefix` – это каталоги, зависящие от установки; оба по умолчанию имеют значение `/usr/local`.343344Когда [`PYTHONHOME`](https://python-all.ru/2.7/using/cmdline.html#envvar-PYTHONHOME) установлен в один каталог, его значение заменяет оба `prefix` и `exec_prefix`. Чтобы указать для них разные значения, установите [`PYTHONHOME`](https://python-all.ru/2.7/using/cmdline.html#envvar-PYTHONHOME) в `prefix:exec_prefix`.345346**`PYTHONPATH`**347348Дополняет путь поиска модулей по умолчанию. Формат такой же, как у `PATH` оболочки: один или несколько путей к каталогам, разделённых [`os.pathsep`](https://python-all.ru/2.7/library/os.html#os.pathsep) (например, двоеточиями в Unix или точкой с запятой в Windows). Несуществующие каталоги игнорируются без предупреждения.349350В дополнение к обычным каталогам, отдельные записи [`PYTHONPATH`](https://python-all.ru/2.7/using/cmdline.html#envvar-PYTHONPATH) могут ссылаться на zip-файлы, содержащие чистые модули Python (в исходной или скомпилированной форме). Модули расширений не могут быть импортированы из zip-файлов.351352Путь поиска по умолчанию зависит от установки, но обычно начинается с `prefix/lib/pythonversion` (см. [`PYTHONHOME`](https://python-all.ru/2.7/using/cmdline.html#envvar-PYTHONHOME) выше). Он *всегда* добавляется к [`PYTHONPATH`](https://python-all.ru/2.7/using/cmdline.html#envvar-PYTHONPATH).353354Дополнительный каталог будет вставлен в путь поиска перед [`PYTHONPATH`](https://python-all.ru/2.7/using/cmdline.html#envvar-PYTHONPATH), как описано выше в разделе [Параметры интерфейса](https://python-all.ru/2.7/using/cmdline.html#using-on-interface-options). Путь поиска можно изменять из программы Python как переменную [`sys.path`](https://python-all.ru/2.7/library/sys.html#sys.path).355356**`PYTHONSTARTUP`**357358Если это имя читаемого файла, команды Python из этого файла выполняются до отображения первого приглашения в интерактивном режиме. Файл выполняется в том же пространстве имён, что и интерактивные команды, поэтому объекты, определённые или импортированные в нём, можно использовать без дополнительных уточнений в интерактивном сеансе. Также в этом файле можно изменить приглашения [`sys.ps1`](https://python-all.ru/2.7/library/sys.html#sys.ps1) и [`sys.ps2`](https://python-all.ru/2.7/library/sys.html#sys.ps2).359360**`PYTHONY2K`**361362Если присвоить этой переменной непустую строку, модуль [`time`](https://python-all.ru/2.7/library/time.html#module-time) будет требовать, чтобы даты, задаваемые в виде строк, содержали четырёхзначные годы; в противном случае двузначные годы преобразуются по правилам, описанным в документации модуля [`time`](https://python-all.ru/2.7/library/time.html#module-time).363364**`PYTHONOPTIMIZE`**365366Если эта переменная установлена в непустую строку, это эквивалентно указанию опции [`-O`](https://python-all.ru/2.7/using/cmdline.html#cmdoption-o). Если установлено целое число, это эквивалентно указанию [`-O`](https://python-all.ru/2.7/using/cmdline.html#cmdoption-o) несколько раз.367368**`PYTHONDEBUG`**369370Если эта переменная установлена в непустую строку, это эквивалентно указанию опции [`-d`](https://python-all.ru/2.7/using/cmdline.html#cmdoption-d). Если установлено целое число, это эквивалентно указанию [`-d`](https://python-all.ru/2.7/using/cmdline.html#cmdoption-d) несколько раз.371372**`PYTHONINSPECT`**373374Если эта переменная установлена в непустую строку, это эквивалентно указанию опции [`-i`](https://python-all.ru/2.7/using/cmdline.html#cmdoption-i).375376Эта переменная также может быть изменена кодом Python с помощью [`os.environ`](https://python-all.ru/2.7/library/os.html#os.environ), чтобы принудительно включить режим инспектирования при завершении программы.377378**`PYTHONUNBUFFERED`**379380Если эта переменная установлена в непустую строку, это эквивалентно указанию опции [`-u`](https://python-all.ru/2.7/using/cmdline.html#cmdoption-u).381382**`PYTHONVERBOSE`**383384Если эта переменная установлена в непустую строку, это эквивалентно указанию опции [`-v`](https://python-all.ru/2.7/using/cmdline.html#id3). Если установлено целое число, это эквивалентно указанию [`-v`](https://python-all.ru/2.7/using/cmdline.html#id3) несколько раз.385386**`PYTHONCASEOK`**387388Если эта переменная установлена, Python игнорирует регистр в операторах [`import`](https://python-all.ru/2.7/reference/simple_stmts.html#import). Это работает только на Windows, OS X, OS/2 и RiscOS.389390**`PYTHONDONTWRITEBYTECODE`**391392Если эта переменная установлена, Python не будет записывать файлы `.pyc` или `.pyo` при импорте исходных модулей. Это эквивалентно указанию опции [`-B`](https://python-all.ru/2.7/using/cmdline.html#id1).393394Новое в версии 2.6.395396**`PYTHONHASHSEED`**397398Если эта переменная установлена в `random`, эффект аналогичен указанию опции [`-R`](https://python-all.ru/2.7/using/cmdline.html#cmdoption-r): для инициализации хешей объектов str, bytes и datetime используется случайное значение.399400Если [`PYTHONHASHSEED`](https://python-all.ru/2.7/using/cmdline.html#envvar-PYTHONHASHSEED) установлена в целое число, оно используется как фиксированное начальное значение для генерации hash() типов, на которые распространяется рандомизация хешей.401402Его цель – обеспечить воспроизводимое хеширование, например, для самотестирования самого интерпретатора, или чтобы позволить кластеру процессов Python обмениваться значениями хешей.403404Целое число должно быть десятичным числом в диапазоне \[0, 4294967295\]. Указание значения 0 приведёт к тем же значениям хеша, что и при отключённой рандомизации хешей.405406Новое в версии 2.6.8.407408**`PYTHONIOENCODING`**409410Переопределяет кодировку, используемую для stdin/stdout/stderr, в синтаксисе `encodingname:errorhandler`. Часть `:errorhandler` необязательна и имеет то же значение, что и в [`str.encode()`](https://python-all.ru/2.7/library/stdtypes.html#str.encode).411412Новое в версии 2.6.413414**`PYTHONNOUSERSITE`**415416Если эта переменная установлена, Python не будет добавлять [`user site-packages directory`](https://python-all.ru/2.7/library/site.html#site.USER_SITE) в [`sys.path`](https://python-all.ru/2.7/library/sys.html#sys.path).417418Новое в версии 2.6.419420> **См. также**421>422> [**PEP 370**](https://python-all.ru/2.7/using/cmdline.html) – Каталог site-packages для каждого пользователя423424**`PYTHONUSERBASE`**425426Определяет [`user base directory`](https://python-all.ru/2.7/library/site.html#site.USER_BASE), который используется для вычисления пути к [`user site-packages directory`](https://python-all.ru/2.7/library/site.html#site.USER_SITE) и [путям установки Distutils](https://python-all.ru/2.7/install/index.html#inst-alt-install-user) для `python setup.py install --user`.427428Новое в версии 2.6.429430> **См. также**431>432> [**PEP 370**](https://python-all.ru/2.7/using/cmdline.html) – Каталог site-packages для каждого пользователя433434**`PYTHONEXECUTABLE`**435436Если эта переменная окружения установлена, `sys.argv[0]` будет установлено в её значение вместо значения, полученного через C runtime. Работает только в Mac OS X.437438**`PYTHONWARNINGS`**439440Это эквивалентно опции [`-W`](https://python-all.ru/2.7/using/cmdline.html#cmdoption-w). Если присвоена строка, разделённая\\nзапятыми, это эквивалентно указанию [`-W`](https://python-all.ru/2.7/using/cmdline.html#cmdoption-w) несколько\\nраз.441442**`PYTHONHTTPSVERIFY`**443444Если эта переменная окружения установлена именно в `0`, то это эквивалентно неявному вызову [`ssl._https_verify_certificates()`](https://python-all.ru/2.7/library/ssl.html#ssl._https_verify_certificates) с `enable=False` при первом импорте [`ssl`](https://python-all.ru/2.7/library/ssl.html#module-ssl).445446Подробнее см. документацию [`ssl._https_verify_certificates()`](https://python-all.ru/2.7/library/ssl.html#ssl._https_verify_certificates).447448Новое в версии 2.7.12.449450### 1.2.1. Переменные режима отладки451452Установка этих переменных работает только в отладочной сборке Python, то есть если Python был сконфигурирован с параметром сборки `--with-pydebug`.453454**`PYTHONTHREADDEBUG`**455456Если установлено, Python будет выводить отладочную информацию о потоках.457458Изменено в версии 2.6: Ранее эта переменная называлась `THREADDEBUG`.459460**`PYTHONDUMPREFS`**461462Если установлено, Python будет выгружать объекты и счетчики ссылок, все еще живые после завершения работы интерпретатора.463464**`PYTHONMALLOCSTATS`**465466Если установлено, Python будет выводить статистику распределения памяти каждый раз при создании новой арены объектов, а также при завершении работы.467468**`PYTHONSHOWALLOCCOUNT`**469470Если эта переменная установлена и Python был скомпилирован с определённым `COUNT_ALLOCS`, то Python выведет счётчики выделений в stderr при завершении работы.471472Новое в версии 2.7.15.473474**`PYTHONSHOWREFCOUNT`**475476Если эта переменная установлена, Python будет выводить общее количество ссылок при завершении программы или после каждого оператора в интерактивном интерпретаторе.477478Новое в версии 2.7.15.479