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 argumentcommand
.
-
-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 argumentmodule-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 argumentfilename
.См.также
runpy.run_path()
эквивалентные функциональные возможности, непосредственно доступные для Python кода
Если параметр интерфейса не задан, -i
подразумевается, sys.argv[0]
является пустым строка (""
) и текущий каталог будет добавлен к
началу sys.path
. Кроме того, автоматически включаются функции заполнения
вкладок и редактирования журнала, если они доступны на вашей платформе (см.
Конфигурация Readline).
См.также
Изменено в версии 3.4: Автоматическое включение заполнения вкладок и редактирования журнала.
1.1.2. Универсальные опции¶
1.1.3. Причие опции¶
-
-b
¶
Выдайте предупреждение при сравнении
bytes
илиbytearray
сstr
илиbytes
сint
. Выдайте ошибку, если опция задана дважды (-bb
).
-
-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.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
, чтобы вызвать, осматривают режим после завершения программы.
-
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:
default
: использовать default memory allocators.malloc
: использовать функциюmalloc()
библиотеки C для всех доменов (PYMEM_DOMAIN_RAW
,: c:data:PYMEM_DOMAIN_MEM,:c:data:PYMEM_DOMAIN_OBJ).pymalloc
: используйте домены pymalloc allocatorPYMEM_DOMAIN_MEM
иPYMEM_DOMAIN_OBJ
и используйте функциюmalloc()
дляPYMEM_DOMAIN_RAW
домена.
Установите отладочные хуки:
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. Это гарантирует, что в дополнение к просмотру как самого интерпретатор, так и других языковых компонентов, выполняющихся в одном и том же процессе. (такие как библиотека GNUreadline
), обновленная настройка также замечена в подпроцессах (независимо от того, запущены ли эти процессы интерпретатором 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
опция сборки.