1. Командная строка и среда

CPython интерпретатор просматривает командную строку и окружающую среду для различных параметров настройки.

Детали реализации CPython: Схемы командной строки других реализаций могут отличаться. Дополнительные ресурсы см. в разделе Альтернативные реализация.

1.1. Командная строка

При вызове Python можно указать любой из этих параметров:

python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]

Самый распространенный вариант использования - это, конечно, простой вызов сценария:

python myscript.py

1.1.1. Интерфейсные опции

Интерфейс интерпретатор напоминает интерфейс раковины UNIX, но обеспечивает некоторый дополнительный методы invocation:

  • При вызове со стандартным входом, подключенным к устройству tty, он запрашивает команды и выполняет их до тех пор, пока не будет прочитан EOF (символ конца файла, который можно создать с помощью Ctrl-D в UNIX или Ctrl-Z, Enter в Windows).
  • При вызове с аргументом имени файла или с файлом в качестве стандартного ввода он считывает и выполняет сценарий из этого файла.
  • При вызове с аргументом имени каталога он считывает и выполняет сценарий с соответствующим именем из этого каталога.
  • При вызове с помощью -c command он выполняет оператор(ы) Python, заданные как command. Здесь command может содержать несколько инструкции, разделенных новыми строками. Ведущий пробел значителен в Python заявлениях!
  • При вызове с помощью метода -m module-name данный модуль располагается на пути модуля Python и выполняется как сценарий.

В неинтерактивном режиме весь ввод анализируется перед его выполнением.

Параметр интерфейса завершает список опций, используемых интерпретатором, все последовательные аргументы заканчиваются на sys.argv - обратите внимание, что первый элемент, нижний индекс нуль (sys.argv[0]), является строка, отражающим источник программы.

-c <command>

Выполните команду Python код в command. command может быть одним или несколькими инструкции, разделенными новыми линиями, со значительным начальным пробелом, как в обычном модуле код.

Если этот параметр задан, первый элемент sys.argv будет "-c", а текущий каталог будет добавлен к началу sys.path (что позволит импортировать модули в этот каталог как модули верхнего уровня).

Raises an auditing event cpython.run_command with argument command.

-m <module-name>

Ищите sys.path названный модуль и выполните его содержание как модуль __main__.

Так как аргумент - имя module, вы не должны давать расширение файла (.py). Имя модуля должно быть действительным абсолютным именем модуля Python, но внедрение может не всегда проводить в жизнь это (например, оно может позволить вам использовать имя, которое включает дефис).

Также разрешены имена пакетов (включая пакеты пространства имен). Когда имя пакета будет поставляться вместо нормального модуля, интерпретатор выполнит <pkg>.__main__ как главный модуль. Это поведение намеренно аналогично обработке каталогов и zipfiles, которые передаются интерпретатор в качестве аргумента сценария.

Примечание

Этот параметр не может быть используемый со встроенными модулями и модулями расширений, написанными на языке C, поскольку они не имеют файлов модулей Python. Однако это может все еще быть используемый для предварительно собранных модулей, даже если файл первоисточника не доступен.

Если эта опция задана, первым элементом sys.argv будет полный путь к файлу модуля (во время нахождения файла модуля первый элемент будет установлен в "-m"). Как и в случае с опцией -c, текущий каталог будет добавлен к началу sys.path.

Выбор -I может быть используемый, чтобы управлять сценарием в изолированном режиме, где sys.path не содержит ни текущего каталога, ни справочника пакетов сайта пользователя. Все переменные среды PYTHON* также игнорируются.

Многие стандартные библиотечные модули содержат код, вызываемые при выполнении в качестве сценария. Примером может служить модуль timeit:

python -m timeit -s 'setup here' 'benchmarked code here'
python -m timeit -h # for details

Raises an auditing event cpython.run_module with argument module-name.

См.также

runpy.run_module()
Эквивалентные функциональные возможности, непосредственно доступные для Python кода

PEP 338 – выполнение модулей в виде сценариев

Изменено в версии 3.1: Укажите имя пакета для запуска подмодуля __main__.

Изменено в версии 3.4: поддерживаются также пакеты пространства имен

-

Считывание команд со стандартного входа (sys.stdin). Если стандартный вход является клеммой, подразумевается -i.

Если этот параметр задан, первый элемент sys.argv будет "-", а текущий каталог будет добавлен к началу sys.path.

Raises an auditing event cpython.run_stdin with no arguments.

<script>

Выполните Python код, содержащийся в script, который должен быть путем файловой системы (абсолютным или относительным) со ссылкой на файл Python, каталог, содержащий файл __main__.py, или zipfile, содержащий файл __main__.py.

Если этот параметр задан, первым элементом sys.argv будет имя сценария, указанное в командной строке.

Если имя сценария ссылается непосредственно на файл Python, каталог, содержащий этот файл, добавляется к началу sys.path, и файл выполняется как модуль __main__.

Если имя сценария ссылается на каталог или zipfile, имя сценария добавляется к началу sys.path, и файл __main__.py в этом расположении выполняется как модуль __main__.

Выбор -I может быть используемый, чтобы управлять сценарием в изолированном режиме, где sys.path не содержит ни справочника сценария, ни справочника пакетов сайта пользователя. Все переменные среды PYTHON* также игнорируются.

Raises an auditing event cpython.run_file with argument filename.

См.также

runpy.run_path() эквивалентные функциональные возможности, непосредственно доступные для Python кода

Если параметр интерфейса не задан, -i подразумевается, sys.argv[0] является пустым строка ("") и текущий каталог будет добавлен к началу sys.path. Кроме того, автоматически включаются функции заполнения вкладок и редактирования журнала, если они доступны на вашей платформе (см. Конфигурация Readline).

Изменено в версии 3.4: Автоматическое включение заполнения вкладок и редактирования журнала.

1.1.2. Универсальные опции

-?
-h
--help

Напечатайте краткое описание всех параметров командной строки.

-V
--version

Распечатайте номер версии Python и выйдите. Примером вывода может быть:

Python 3.8.0b2

При двойном вводе напечатайте дополнительную информацию о сборке, например:

Python 3.8.0b2+ (3.8:0c076caaa8, Apr 20 2019, 21:55:00)
[GCC 6.2.0 20161005]

Добавлено в версии 3.6: The -VV option.

1.1.3. Причие опции

-b

Выдайте предупреждение при сравнении bytes или bytearray с str или bytes с int. Выдайте ошибку, если опция задана дважды (-bb).

Изменено в версии 3.5: Влияет на сравнение bytes с int.

-B

Если задано, Python не будет пытаться записать файлы .pyc при импорте исходных модулей. См. также раздел PYTHONDONTWRITEBYTECODE.

--check-hash-based-pycs default|always|never

Управление поведением проверки хэш-файлов .pyc. См. Инвалидация кэша байткода. Если установлено значение default, файлы кэша байт-кодов на основе отмеченных и не отмеченных хэш-кодов проверяются в соответствии с семантикой по умолчанию. Если установлено значение always, все файлы .pyc на основе хэша, если они установлены или не установлены, проверяются по соответствующему исходному файлу. Если установлено значение never, файлы .pyc на основе хэша не проверяются по соответствующим исходным файлам.

Этот параметр не влияет на семантику файлов .pyc на основе временных меток.

-d

Включите продукцию отладки парсер (для эксперта только, в зависимости от вариантов компиляции). См. также раздел PYTHONDEBUG.

-E

Игнорируйте все переменные среды PYTHON*, например, PYTHONPATH и PYTHONHOME, которые могут быть установлены.

-i

Когда сценарий передается в качестве первого аргумента или используется параметр -c, после выполнения сценария или команды, даже если sys.stdin не является терминалом, следует перейти в интерактивный режим. Файл PYTHONSTARTUP не считан.

Это может быть полезно для проверки глобальных переменных или трассировки стека, когда сценарий вызывает исключение. См. также раздел PYTHONINSPECT.

-I

Запустить Python в изолированном режиме. Это также подразумевает -E и -s. В изолированном режиме sys.path не содержит ни каталог сценария, ни каталог пакетов сайта пользователя. Все переменные среды PYTHON* также игнорируются. Дополнительные ограничения могут быть введены для предотвращения введения пользователем вредоносного код.

Добавлено в версии 3.4.

-O

Удалите утверждение инструкции и любое код, зависящее от значения __debug__. Увеличьте имя файла для скомпилированных (байт-код) файлов, добавив .opt-1 перед расширением .pyc (см. PEP 488). См. также раздел PYTHONOPTIMIZE.

Изменено в версии 3.5: Измените имена файлов .pyc согласно PEP 488.

-OO

Делайте -O, а также выбрасывайте докстринги. Увеличьте имя файла для скомпилированных (байт-код) файлов, добавив .opt-2 перед расширением .pyc (см. PEP 488).

Изменено в версии 3.5: Измените имена файлов .pyc согласно PEP 488.

-q

Не отображать сообщения об авторских правах и версии даже в интерактивном режиме.

Добавлено в версии 3.2.

-R

Включить хеш-рандомизацию. Эта опция действует только в том случае, если для переменной среды PYTHONHASHSEED установлено значение 0, поскольку по умолчанию хеш-рандомизация включена.

В предыдущих версиях Python этот параметр включает рандомизацию хеширования, так что значения __hash__() объектов str и bytes «засолены» непредсказуемым случайным значением. Хотя они остаются постоянными в рамках отдельного процесса Python, они не предсказуемы между повторными вызовами Python.

Рандомизация хеширования предназначена для обеспечения защиты от отказа в обслуживании, вызванного тщательно подобранными входами, которые используют наихудшую производительность конструкции dict, сложность O(n^2). Дополнительные сведения см. в разделе http://www.ocert.org/advisories/ocert-2011-003.html.

PYTHONHASHSEED позволяет задать фиксированное значение для ключа начального значения хэша.

Изменено в версии 3.7: Этот параметр больше не игнорируется.

Добавлено в версии 3.2.3.

-s

Не добавляйте user site-packages directory в sys.path.

См.также

PEP 370 – каталог пакетов сайтов для каждого пользователя

-S

Отключите импорт модуля site и зависимые от сайта манипуляции sys.path, который он влечет за собой. Также отключите эти манипуляции, если site явно импортирован позже (назовите site.main(), если вы хотите, чтобы они были вызваны).

-u

Вытащите потоки stdout и stderr из буфера. Этот параметр не влияет на поток stdin.

См. также PYTHONUNBUFFERED.

Изменено в версии 3.7: Текстовый слой потоков stdout и stderr теперь не буферизован.

-v

Печать сообщения при каждой инициализации модуля с указанием места (имени файла или встроенного модуля), откуда оно загружается. Дважды (-vv) распечатайте сообщение для каждого файла, который проверяется при поиске модуля. Также содержит информацию о очистке модуля на выходе. См. также раздел PYTHONVERBOSE.

-W arg

Предупреждение контроля. Python’s механизм предупреждения по умолчанию печатает предупреждающие сообщения для sys.stderr. Типичное предупреждающее сообщение имеет следующую форму:

file:line: category: message

По умолчанию каждое предупреждение печатается один раз для каждой исходной строки, где оно происходит. Этот параметр управляет частотой печати предупреждений.

Могут быть заданы несколько вариантов -W; если предупреждение соответствует нескольким опциям, выполняется действие для последнего параметра сопоставления. Недопустимые параметры -W игнорируются (однако при первом выводе предупреждения выводится предупреждающее сообщение о недопустимых параметрах).

Предупреждениями также можно управлять с помощью переменной среды PYTHONWARNINGS и из программы Python с помощью модуля warnings.

Простейшие настройки безоговорочно применяют определенное действие ко всем предупреждениям, выдаваемым процессом (даже к тем, которые по умолчанию игнорируются другими способами):

-Wdefault  # Warn once per call location
-Werror    # Convert to exceptions
-Walways   # Warn every time
-Wmodule   # Warn once per calling module
-Wonce     # Warn once per Python process
-Wignore   # Never warn

Имена действия могут быть сокращены, как желаемый (например, -Wi, -Wd, -Wa, -We), и интерпретатор решит их к имени соответствующих мер.

Дополнительные сведения см. в разделах Фильтр предупреждений и Описание фильтров предупреждений.

-x

Пропустите первую строку источника, разрешив использование не Unix-форм #!cmd. Это предназначено только для взлома DOS.

-X

Зарезервирован для различных вариантов реализации. CPython в настоящее время определяет следующие возможные значения:

  • -X faulthandler для включения faulthandler;
  • -X showrefcount, чтобы произвести полное справочное количество и количество памяти используемый блокирует, когда программа заканчивается или после каждого инструкция в интерактивном интерпретатор. Это работает только для отладочных построений.
  • -X tracemalloc, чтобы начать прослеживать отчисления памяти Python, используя модуль tracemalloc. По умолчанию в трейсбэк трассировки сохраняется только самый последний кадр. Используйте -X tracemalloc=NFRAME, чтобы начать прослеживать с пределом трейсбэк структур NFRAME. Дополнительные сведения см. в разделе tracemalloc.start().
  • -X showalloccount для вывода общего количества выделенных объектов для каждого типа по завершении программы. Это только работает, когда Python был построен с определенным COUNT_ALLOCS.
  • -X importtime, чтобы показать, сколько времени занимает каждый импорт. Он показывает имя модуля, совокупное время (включая вложенный импорт) и собственное время (исключая вложенный импорт). Следует отметить, что его выход может быть нарушен в многопоточном приложении. Типичное использование - python3 -X importtime -c 'import asyncio'. См. такж раздел PYTHONPROFILEIMPORTTIME.
  • -X dev: включить «режим разработки» CPython, введя дополнительные проверки среды выполнения, которые слишком дороги для включения по умолчанию. Он не должен быть более подробным, чем значение по умолчанию, если код является правильным: новые предупреждения выдаются только при обнаружении проблемы. Эффект режима разработчика:
    • Добавьте фильтр предупреждения default как -W default.
    • Установите отладочные хуки на распределители памяти: см. функцию the:c:func:PyMem_SetupDebugHooks C.
    • Включите модуль faulthandler для сброса Python трейсбэк в случае сбоя.
    • Включите asyncio debug mode.
    • Установите dev_mode атрибут sys.flags True.
    • io.IOBase деструктор регистрирует исключения close().
  • -X utf8 включает режим UTF-8 для интерфейсов операционной системы, переопределяя режим с учетом языковых стандартов по умолчанию. -X utf8=0 явно отключает режим UTF-8 (даже если в противном случае он активируется автоматически). Дополнительные сведения см. в разделе PYTHONUTF8.
  • -X pycache_prefix=PATH позволяет записывать файлы .pyc в параллельное дерево, коренящееся в данном каталоге, а не в дерево код. См. также раздел PYTHONPYCACHEPREFIX.

Это также позволяет передавать произвольные значения и извлекать их через словарь sys._xoptions.

Изменено в версии 3.2: Добавлен параметр -X.

Добавлено в версии 3.3: Опция -X faulthandler.

Добавлено в версии 3.4: Параметры -X showrefcount и -X tracemalloc.

Добавлено в версии 3.6: Опция -X showalloccount.

Добавлено в версии 3.7: Опции -X importtime, -X dev и -X utf8.

Добавлено в версии 3.8: Опция -X pycache_prefix. Опция -X dev теперь регистрирует исключения close() в деструкторе io.IOBase.

1.1.4. Опции, которые вы не должны использовать

-J

Зарезервировано для использования Jython.

1.2. Переменные окружения

Эти переменные среды влияют на поведение Python’s, они обрабатываются перед переключателями командной строки, отличными от -E или -I. Обычно коммутаторы командной строки переопределяют переменные среды при возникновении конфликта.

PYTHONHOME

Измените расположение стандартных библиотек Python. По умолчанию библиотеки - найденный в prefix/lib/pythonversion и exec_prefix/lib/pythonversion, где prefix и exec_prefix - зависимые от установки справочники, оба невыполнения обязательств к /usr/local.

Когда PYTHONHOME установлен в единственный справочник, его стоимость заменяет и prefix и exec_prefix. Чтобы задать для них различные значения, установите для параметра PYTHONHOME значение prefix:exec_prefix.

PYTHONPATH

Увеличьте путь поиска по умолчанию для файлов модулей. Формат совпадает с форматом PATH оболочки: одно или несколько путей каталога, разделенных os.pathsep (например, двоеточия в Unix или точка с запятой в Windows). Несуществующие каталоги автоматически игнорируются.

В дополнение к обычным каталогам, отдельные записи PYTHONPATH могут относиться к zipfiles, содержащим чистые модули Python (в исходной или скомпилированной форме). Модули расширений нельзя импортировать из zipfiles.

Путь поиска по умолчанию - инсталляционный иждивенец, но обычно начинается с prefix/lib/pythonversion (см. PYTHONHOME выше). Он always добавляется к PYTHONPATH.

Дополнительный каталог будет вставлен в путь поиска перед PYTHONPATH, как описано выше в разделе Интерфейсные опции. Путем поиска можно управлять из программы Python в качестве переменной sys.path.

PYTHONSTARTUP

Если это имя читаемого файла, команды Python в этом файле выполняются перед отображением первого запроса в интерактивном режиме. Файл выполняется в том же пространстве имен, где выполняются интерактивные команды, чтобы объекты, определенные или импортированные в него, могли быть используемый без квалификации в интерактивном сеансе. Также в этом файле можно изменить подсказки sys.ps1 и sys.ps2 и крючок sys.__interactivehook__.

Вызывает событие аудита cpython.run_startup с именем файла в качестве аргумента при запуске.

PYTHONOPTIMIZE

Если это установлено в непустой строка, это эквивалентно определению выбора -O. Если задано целое число, оно эквивалентно заданию -O несколько раз.

PYTHONBREAKPOINT

Если этот параметр установлен, он называет вызываемый объект с помощью нотации с пунктирным контуром. Модуль, содержащий подлежащее выкупу, будет импортирован, и затем подлежащим выкупу будет управлять внедрение по умолчанию sys.breakpointhook(), который самого называет встроенный breakpoint(). Если значение не установлено или установлено в пустую строку, оно эквивалентно значению «pdb.set_trace.» установка этого значения в <unk> «0» приводит к тому, что реализация по умолчанию <unk> не делает ничего, кроме немедленного возврата.

Добавлено в версии 3.7.

PYTHONDEBUG

Если это установлено в непустой строка, это эквивалентно определению выбора -d. Если задано целое число, оно эквивалентно заданию -d несколько раз.

PYTHONINSPECT

Если это установлено в непустой строка, это эквивалентно определению выбора -i.

Эта переменная может также быть изменена Python код, используя os.environ, чтобы вызвать, осматривают режим после завершения программы.

PYTHONUNBUFFERED

Если это установлено в непустой строка, это эквивалентно определению выбора -u.

PYTHONVERBOSE

Если это установлено в непустой строка, это эквивалентно определению выбора -v. Если задано целое число, оно эквивалентно заданию -v несколько раз.

PYTHONCASEOK

Если этот параметр установлен, Python игнорирует регистр в import инструкции. Это работает только в Windows и OS X.

PYTHONDONTWRITEBYTECODE

Если задано значение непустой строки, Python не будет пытаться записывать файлы .pyc при импорте исходных модулей. Это эквивалентно заданию параметра -B.

PYTHONPYCACHEPREFIX

Если это будет установлено, то Python напишет файлы .pyc в дереве каталогов зеркала на этом пути, вместо в каталогах __pycache__ в исходном дереве. Это эквивалентно заданию параметра -X pycache_prefix=PATH.

Добавлено в версии 3.8.

PYTHONHASHSEED

Если эта переменная не установлена или установлена в random, случайная стоимость - используемый, чтобы отобрать мешанины объектов байтов и ул.

Если для параметра PYTHONHASHSEED установлено целое значение, он используемый как фиксированное начальное значение для генерации хеша () типов, охватываемых рандомизацией хеша.

Его цель - разрешить повторяемое хеширование, например, для selftests для самого интерпретатор, или разрешить кластеру процессов python совместно использовать значения хеширования.

Целое число должно быть десятичным числом в диапазоне [0, 4294967295]. Указание значения 0 отключит рандомизацию хеширования.

Добавлено в версии 3.2.3.

PYTHONIOENCODING

Если этот параметр установлен перед запуском интерпретатора, он переопределяет кодировка используемый для stdin/stdout/stderr в синтаксисе encodingname:errorhandler. И encodingname, и :errorhandler части являются необязательными и имеют то же значение, что и в str.encode().

Для stderr :errorhandler часть игнорируется; обработчик всегда будет 'backslashreplace'.

Изменено в версии 3.4: Теперь encodingname часть является необязательной.

Изменено в версии 3.6: В Windows кодировка, указанная этой переменной, игнорируется для интерактивных буферов консоли, если не указано также PYTHONLEGACYWINDOWSSTDIO. На файлы и пайпы, перенаправленные через стандартные потоки, это не влияет.

PYTHONNOUSERSITE

Если это будет установлено, то Python не добавит user site-packages directory к sys.path.

См.также

PEP 370 – каталог пакетов сайтов для каждого пользователя

PYTHONUSERBASE

Определяет user base directory, который является используемый для вычисления пути user site-packages directory и Пути установки Distutils для python setup.py install --user.

См.также

PEP 370 – каталог пакетов сайтов для каждого пользователя

PYTHONEXECUTABLE

Если эта переменная окружения будет установлена, то sys.argv[0] будет установлен в свою стоимость вместо стоимости, прошел через время выполнения C. Работает только на Mac OS X.

PYTHONWARNINGS

Это эквивалентно параметру -W. Если задано значение «строка, разделенная запятыми», это эквивалентно заданию -W несколько раз, причем фильтры в дальнейшем в списке имеют приоритет над фильтрами ранее в списке.

Простейшие настройки безоговорочно применяют определенное действие ко всем предупреждениям, выдаваемым процессом (даже к тем, которые по умолчанию игнорируются другими способами):

PYTHONWARNINGS=default  # Warn once per call location
PYTHONWARNINGS=error    # Convert to exceptions
PYTHONWARNINGS=always   # Warn every time
PYTHONWARNINGS=module   # Warn once per calling module
PYTHONWARNINGS=once     # Warn once per Python process
PYTHONWARNINGS=ignore   # Never warn

См. в дополнительные сведения разделах Фильтр предупреждений и Описание фильтров предупреждений.

PYTHONFAULTHANDLER

Если эта переменная окружения установлена в непустую последовательность, faulthandler.enable() называют при запуске: установите укладчика для SIGSEGV, SIGFPE, SIGABRT, SIGBUS и SIGILL сигнализируют, чтобы свалить Python трейсбэк. Это эквивалентно параметру -X faulthandler.

Добавлено в версии 3.3.

PYTHONTRACEMALLOC

Если эта переменная окружения установлена в непустую последовательность, начните прослеживать отчисления памяти Python, используя модуль tracemalloc. Значение переменной - это максимальное количество кадров, хранящихся в трейсбэк трассировки. Например, PYTHONTRACEMALLOC=1 хранит только самый последний кадр. Дополнительные сведения см. в разделе tracemalloc.start().

Добавлено в версии 3.4.

PYTHONPROFILEIMPORTTIME

Если для этой переменной среды установлена непустая строка, Python покажет, сколько времени занимает каждый импорт. Это в точности эквивалентно установке -X importtime в командной строке.

Добавлено в версии 3.7.

PYTHONASYNCIODEBUG

Если эта переменная окружения установлена в непустую последовательность, включите debug mode модуля asyncio.

Добавлено в версии 3.4.

PYTHONMALLOC

Установите распределителей памяти Python и/или установите крюки отладки.

Задайте семейство распределителей памяти используемый Python:

Установите отладочные хуки:

  • debug: установить отладочные хуки поверх default memory allocators.
  • malloc_debug: то же, что и malloc, но также установите отладочные хуки.
  • pymalloc_debug: то же, что и pymalloc, но также установите отладочные хуки.

Посмотрите default memory allocators, и PyMem_SetupDebugHooks() функционировать (установите отладку, зацепляет распределителей памяти Python).

Изменено в версии 3.7: Добавлен распределитель "default".

Добавлено в версии 3.6.

PYTHONMALLOCSTATS

Если установлено в непустую последовательность, Python напечатает статистику pymalloc memory allocator каждый раз, когда новая арена объекта pymalloc создана и на закрытии.

Эта переменная проигнорирована, если переменная окружения PYTHONMALLOC - используемый, чтобы вынудить the:c:func:malloc лицо, ведающее распределением библиотеки C, или если Python настроен без поддержки pymalloc.

Изменено в версии 3.6: Эта переменная может теперь также быть используемый на Python, собранном в режиме выпуска. Теперь он не действует, если задано пустое строка.

PYTHONLEGACYWINDOWSFSENCODING

Если установлено значение непустой строки, то в режиме файловой системы кодировка и ошибок по умолчанию будут возвращены значения «mbcs» и «replace» соответственно до 3.6. В противном случае новые значения по умолчанию «utf-8» и «суррогатепас» являются используемый.

Это также может быть включено во время выполнения с помощью sys._enablelegacywindowsfsencoding().

Availability: Windows.

Добавлено в версии 3.6: Дополнительные сведения см. в разделе PEP 529.

PYTHONLEGACYWINDOWSSTDIO

Если установлено значение непустой строки, не использует новое устройство чтения и записи консоли. Это означает, что знаки Unicode будут кодированный согласно активному пульту страница код, вместо того, чтобы использовать utf-8.

Эта переменная игнорируется, если стандартные потоки перенаправляются (в файлы или каналы), а не ссылаются на буферы консоли.

Availability: Windows.

Добавлено в версии 3.6.

PYTHONCOERCECLOCALE

Если установлено в стоимость 0, вызывает главное заявление командной строки Python пропустить принуждение наследия, основанный на ASCII C и места действия POSIX к более способному UTF-8 основывали альтернативу.

Если эта переменная - набор not (или установлен в стоимость кроме 0),, место действия LC_ALL отвергает переменную окружения, также не установлен, и текущее место действия, о котором сообщают для категории LC_CTYPE, является или дефолтом место действия C или иначе явно основанным на ASCII местом действия POSIX, тогда Python CLI попытается настроить следующие места действия для категории LC_CTYPE в заказе, перечисленном прежде, чем загрузить интерпретатор runtime:

  • C.UTF-8
  • C.utf8
  • UTF-8

Если одна из этих категорий языкового стандарта успешно задана, то переменная среды LC_CTYPE также будет установлена соответствующим образом в текущей среде процесса до инициализации среды выполнения Python. Это гарантирует, что в дополнение к просмотру как самого интерпретатор, так и других языковых компонентов, выполняющихся в одном и том же процессе. (такие как библиотека GNU readline), обновленная настройка также замечена в подпроцессах (независимо от того, запущены ли эти процессы интерпретатором Python), а также в операциях, которые подвергают сомнению окружающую среду, а не ток C место действия (такое как Python’s владеют locale.getdefaultlocale()).

Настройка одного из этих языков (явного или неявного принуждения языкового стандарта) автоматически включает surrogateescape error handler для sys.stdin и sys.stdout (sys.stderr продолжает использовать backslashreplace, как и в любой другой языковой стандарт). Это поведение обработки потока может быть отвергнуто, используя PYTHONIOENCODING, как обычно.

Для отладки целей, устанавливая PYTHONCOERCECLOCALE=warn заставит Python испускать предупреждающие сообщения на stderr, если или принуждение места действия активирует, или иначе если место действия, что would вызвали принуждение, все еще активно, когда время выполнения Python инициализировано.

Также обратите внимание, что, даже когда принуждение места действия отключено, или когда оно не находит подходящее целевое место действия, PYTHONUTF8 все еще активирует по умолчанию в наследии основанные на ASCII места действия. Обе опции должны быть отключены, чтобы вынудить интерпретатор использовать ASCII вместо UTF-8 для системных интерфейсов.

Availability: *nix.

Добавлено в версии 3.7: Дополнительные сведения см. в разделе PEP 538.

PYTHONDEVMODE

Если для этой переменной среды установлена непустая строка, включите CPython «режим разработки». См. параметр -X dev.

Добавлено в версии 3.7.

PYTHONUTF8

Если установлено в 1, включает режим переводчика UTF-8, где UTF-8 - используемый как текст кодировка для системных интерфейсов, независимо от текущей настройки места действия.

Это означает что:

  • sys.getfilesystemencoding() возвращает 'UTF-8' (языковой стандарт кодировка игнорируется).
  • locale.getpreferredencoding() возвращает 'UTF-8' (языковой стандарт кодировка игнорируется, а параметр do_setlocale функции не действует).
  • sys.stdin, sys.stdout и sys.stderr все используют UTF-8 в качестве кодировки текста, с включенными surrogateescape error handler для sys.stdin и sys.stdout (sys.stderr продолжает использовать backslashreplace, как и в режиме с учетом языкового стандарта по умолчанию)

В результате изменений в этих API более низкого уровня другие API более высокого уровня также демонстрируют другое поведение по умолчанию:

  • Аргументы командной строки, переменные среды и имена файлов декодируются в текст с помощью UTF-8 кодировка.
  • os.fsdecode() и os.fsencode() используйте UTF-8 Кодировка.
  • open(), io.open() и codecs.open() по умолчанию используют UTF-8 кодировка. Тем не менее, они по-прежнему используют строгий обработчик ошибок по умолчанию, так что попытка открыть двоичный файл в текстовом режиме, вероятно, вызовет исключение, а не создаст бредовые данные.

Обратите внимание, что стандартные настройки потока в режиме UTF-8 могут быть переопределены параметром PYTHONIOENCODING (точно так же, как они могут находиться в режиме с учетом языкового стандарта по умолчанию).

Если установлено значение 0, интерпретатор работает в стандартном режиме с учетом языковых стандартов.

Установка других непустых строка приводит к ошибке во время инициализации интерпретатор.

Если эта переменная окружения не установлена вообще, то дефолты интерпретатор к использованию текущих параметров настройки места действия, unless, текущее место действия идентифицировано как наследие основанное на ASCII место действия (как описано для PYTHONCOERCECLOCALE), и принуждение места действия, или отключены или терпят неудачу. В таких устаревших местах действия интерпретатор не выполнит своих обязательств к предоставлению возможности режима UTF-8, если явно не проинструктировано не сделать так.

Также доступна в качестве опции -X utf8.

Добавлено в версии 3.7: Дополнительные сведения см. в разделе PEP 540.

1.2.1. Переменные режима отладки

Установка этих переменных влияет только на отладочную сборку Python.

PYTHONTHREADDEBUG

Если этот параметр установлен, Python будет печатать данные отладки многопоточности.

Python потребности, настроенные с --with-pydebug, строят выбор.

PYTHONDUMPREFS

Если установлено, Python свалит объекты и справочное количество, все еще живое после закрытия интерпретатор.

Нужно, чтобы Python был настроен с помощью --with-trace-refs опция сборки.