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_commandwith 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_modulewith 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_stdinwith 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_filewith 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-pycsdefault|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.
-
-Warg¶ Предупреждение контроля. 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как-Wdefault. - Установите отладочные хуки на распределители памяти: см. функцию the:c:func:PyMem_SetupDebugHooks C.
- Включите модуль
faulthandlerдля сброса Python трейсбэк в случае сбоя. - Включите asyncio debug mode.
- Установите
dev_modeатрибутsys.flagsTrue. 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__в исходном дереве. Это эквивалентно заданию параметра-Xpycache_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 трейсбэк. Это эквивалентно параметру-Xfaulthandler.Добавлено в версии 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-8C.utf8UTF-8
Если одна из этих категорий языкового стандарта успешно задана, то переменная среды
LC_CTYPEтакже будет установлена соответствующим образом в текущей среде процесса до инициализации среды выполнения Python. Это гарантирует, что в дополнение к просмотру как самого интерпретатор, так и других языковых компонентов, выполняющихся в одном и том же процессе. (такие как библиотека GNUreadline), обновленная настройка также замечена в подпроцессах (независимо от того, запущены ли эти процессы интерпретатором Python), а также в операциях, которые подвергают сомнению окружающую среду, а не ток C место действия (такое как Python’s владеютlocale.getdefaultlocale()).Настройка одного из этих языков (явного или неявного принуждения языкового стандарта) автоматически включает
surrogateescapeerror 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 «режим разработки». См. параметр
-Xdev.Добавлено в версии 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 в качестве кодировки текста, с включеннымиsurrogateescapeerror 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, если явно не проинструктировано не сделать так.Также доступна в качестве опции
-Xutf8.Добавлено в версии 3.7: Дополнительные сведения см. в разделе PEP 540.
1.2.1. Переменные режима отладки¶
Установка этих переменных влияет только на отладочную сборку Python.
-
PYTHONTHREADDEBUG¶ Если этот параметр установлен, Python будет печатать данные отладки многопоточности.
Python потребности, настроенные с
--with-pydebug, строят выбор.
-
PYTHONDUMPREFS¶ Если установлено, Python свалит объекты и справочное количество, все еще живое после закрытия интерпретатор.
Нужно, чтобы Python был настроен с помощью
--with-trace-refsопция сборки.
