Командная строка и среда
Интерпретатор CPython сканирует командную строку и среду для различных настроек.
Деталь реализации CPython: Схемы командной строки других реализаций могут отличаться. См. Альтернативные реализации для получения дополнительной информации.
1.1. Командная строка
При вызове Python можно указать любой из этих параметров:
python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]
Наиболее распространённым случаем является, конечно, простой вызов скрипта:
python myscript.py
1.1.1. Параметры интерфейса
Интерфейс интерпретатора похож на интерфейс оболочки UNIX, но предоставляет некоторые дополнительные методы вызова:
- При вызове со стандартным вводом, подключённым к устройству tty, он запрашивает команды и выполняет их до тех пор, пока не будет прочитан EOF (символ конца файла; его можно получить с помощью Ctrl-D в UNIX или Ctrl-Z, Enter в Windows).
- При вызове с именем файла в качестве аргумента или с файлом как стандартным вводом, он читает и выполняет скрипт из этого файла.
- При вызове с именем каталога в качестве аргумента, он читает и выполняет соответствующим образом названный скрипт из этого каталога.
- При вызове с
-c command, он выполняет переданные как команда Python-выражения. Здесь команда может содержать несколько выражений, разделённых символами новой строки. Пробелы в начале Python-выражений имеют значение! - При вызове с
-m module-name, указанный модуль находится в пути Python-модулей и выполняется как скрипт.
В неинтерактивном режиме весь ввод анализируется перед выполнением.
Параметр интерфейса завершает список параметров, потребляемых интерпретатором; все последующие аргументы попадут в sys.argv – обратите внимание, что первый элемент, с индексом ноль (sys.argv[0]), является строкой, отражающей исходный код программы.
-
-c <command> -
Выполнить Python-код в команде. Команда может состоять из одного или нескольких выражений, разделённых символами новой строки, с учётом пробелов в начале, как в обычном коде модуля.
Если этот параметр указан, первый элемент
sys.argvбудет"-c", а текущий каталог будет добавлен в началоsys.path(что позволяет импортировать модули из этого каталога как верхнеуровневые модули).Вызывает событие аудита аудита
cpython.run_commandс аргументомcommand.
-
-m <module-name> -
Поиск в
sys.pathуказанного модуля и выполнение его содержимого как модуля__main__.Так как аргумент — это имя модуля, не следует указывать расширение файла (
.py). Имя модуля должно быть допустимым полным именем Python-модуля, но реализация не всегда будет это проверять (например, она может разрешить использование имени, содержащего дефис).Имена пакетов (включая пакеты пространств имён) также допускаются. Если указано имя пакета вместо обычного модуля, интерпретатор выполнит
<pkg>.__main__как основной модуль. Это поведение преднамеренно похоже на обработку каталогов и zip-файлов, передаваемых интерпретатору в качестве аргумента скрипта.Примечание
Этот параметр нельзя использовать с встроенными модулями и модулями расширения, написанными на C, так как у них нет файлов Python-модулей. Однако его можно использовать для предварительно скомпилированных модулей, даже если исходный исходный файл недоступен.
Если этот параметр указан, первый элемент
sys.argvбудет полным путем к файлу модуля (в то время как файл модуля ищется, первый элемент будет установлен на"-m"). Как и с параметром-c, текущий каталог будет добавлен в началоsys.path.-Iпараметр может быть использован для запуска скрипта в изолированном режиме, когдаsys.pathне содержит ни текущего каталога, ни каталога site-packages пользователя. Все переменные окруженияPYTHON*также игнорируются.Во многих модулях стандартной библиотеки есть код, который вызывается при выполнении их как скрипта. Пример — модуль
timeit:python -m timeit -s 'setup here' 'benchmarked code here' python -m timeit -h # for details
Вызывает событие аудита аудита
cpython.run_moduleс аргументомmodule-name.См. также
-
runpy.run_module() -
Эквивалентная функциональность, напрямую доступная коду Python
PEP 338 — Выполнение модулей как скриптов
Изменено в версии 3.1: Укажите имя пакета для запуска подмодуля
__main__.Изменено в версии 3.4: поддерживаются пакеты пространств имён
-
-
- -
Чтение команд из стандартного ввода (
sys.stdin). Если стандартный ввод — это терминал, предполагается-i.Если этот параметр указан, первый элемент
sys.argvбудет"-", а текущий каталог будет добавлен в началоsys.path.Вызывает событие аудита аудита
cpython.run_stdinбез аргументов.
-
<script> -
Выполнение Python-кода, содержащегося в скрипте, который должен быть путём к файлу в файловой системе (абсолютным или относительным), ссылающимся на Python-файл, каталог, содержащий файл
__main__.py, или zip-архив, содержащий файл__main__.py.Если этот параметр указан, первый элемент
sys.argvбудет именем скрипта, указанным в командной строке.Если имя скрипта ссылается непосредственно на Python-файл, каталог, содержащий этот файл, добавляется в начало
sys.path, и файл выполняется как модуль__main__.Если имя скрипта ссылается на каталог или zip-архив, имя скрипта добавляется в начало
sys.path, и файл__main__.pyв этом месте выполняется как модуль__main__.-Iпараметр может быть использован для запуска скрипта в изолированном режиме, когдаsys.pathне содержит ни каталога скрипта, ни каталога site-packages пользователя. Все переменные окруженияPYTHON*также игнорируются.Вызывает событие аудита аудита
cpython.run_fileс аргументом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: Параметр
-VV.
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не содержит ни каталога скрипта, ни каталога site-packages пользователя. Все переменные окруженияPYTHON*также игнорируются. Могут быть наложены дополнительные ограничения, чтобы предотвратить ввод вредоносного кода.Новое в версии 3.4.
-
-O -
Удаляет операторы assert и любой код, условный относительно значения
__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.Случайное хеширование предназначено для защиты от атаки отказа в обслуживании, вызванной тщательно подобранными входными данными, которые используют худший случай производительности построения словаря, сложность O(n2). Подробности см. в http://www.ocert.org/advisories/ocert-2011-003.html.
С помощью
PYTHONHASHSEEDможно задать фиксированное значение для секрета начального значения хеширования.Изменено в версии 3.7: Параметр больше не игнорируется.
Новое в версии 3.2.3.
-
-s -
Не добавлять
user site-packages directoryвsys.path.См. также
PEP 370 – Каталог site-packages пользователя
-
-S -
Отключить импорт модуля
siteи зависящие от сайта манипуляции сsys.path, которые он выполняет. Также отключить эти манипуляции, если модульsiteявно импортирован позже (вызовитеsite.main(), если хотите, чтобы они были выполнены).
-
-u -
Принудительно сделать потоки stdout и stderr небуферизованными. Этот параметр не влияет на поток stdin.
См. также
PYTHONUNBUFFERED.Изменено в версии 3.7: Текстовый слой потоков stdout и stderr теперь не буферизован.
-
-v -
Выводит сообщение каждый раз, когда инициализируется модуль, показывая место (имя файла или встроенный модуль), из которого он загружается. При двойном указании (
-vv) выводит сообщение для каждого файла, который проверяется при поиске модуля. Также предоставляет информацию о очистке модулей при выходе. См. такжеPYTHONVERBOSE.
-
-W arg -
Управление предупреждениями. Машина предупреждений Python по умолчанию выводит сообщения о предупреждениях в
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 oldparser: включение традиционного парсера LL(1). См. такжеPYTHONOLDPARSERи PEP 617. -
-X showrefcountдля вывода общего счетчика ссылок и количества используемых блоков памяти при завершении программы или после каждой команды в интерактивном интерпретаторе. Это работает только в отладочных сборках. -
-X tracemallocдля начала отслеживания выделения памяти Python с использованием модуляtracemalloc. По умолчанию в дампе отладочной информации хранится только самый последний фрейм. Используйте-X tracemalloc=NFRAMEдля начала отслеживания с ограничением на количество фреймов в стеке NFRAME. См.tracemalloc.start()для получения дополнительной информации. -
-X int_max_str_digitsнастраивает ограничение длины преобразования целых чисел в строки. См. такжеPYTHONINTMAXSTRDIGITS. -
-X importtimeчтобы показать, сколько времени занимает каждый импорт. Он показывает имя модуля, общее время (включая вложенные импорты) и собственное время (исключая вложенные импорты). Обратите внимание, что его вывод может быть прерван в многопоточных приложениях. Типичное использование:python3 -X importtime -c 'import asyncio'. См. такжеPYTHONPROFILEIMPORTTIME. -
-X dev: включение режима разработки Python, вводя дополнительные проверки во время выполнения, которые слишком дороги, чтобы их включать по умолчанию. -
-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.Изменено в версии 3.9: Используя параметр
-X dev, проверяйте аргументы encoding и errors при кодировании и декодировании строк.Параметр
-X showalloccountбыл удалён.Добавлена в версии 3.9.14: Параметр
-X int_max_str_digits.Устарело с версии 3.9, будет удалено в версии 3.10: Параметр
-X oldparser. -
1.1.4. Параметры, которые не следует использовать
-
-J -
Зарезервировано для использования Jython.
1.2. Переменные среды
Эти переменные среды влияют на поведение Python, они обрабатываются перед командными переключателями, кроме -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могут ссылаться на zip-архивы, содержащие чистые Python-модули (в исходной или скомпилированной форме). Модули расширений не могут импортироваться из zip-архивов.Стандартный путь поиска зависит от установки, но обычно начинается с
prefix/lib/pythonversion(см.PYTHONHOMEвыше). Он всегда добавляется кPYTHONPATH.Дополнительный каталог будет вставлен в пути поиска перед
PYTHONPATH, как описано выше в разделе Параметры интерфейса. Путь поиска можно изменять изнутри программы Python как переменнуюsys.path.
-
PYTHONPLATLIBDIR -
Если это значение установлено в непустую строку, оно переопределяет значение
sys.platlibdir.Новое в версии 3.9.
-
PYTHONSTARTUP -
Если это имя читаемого файла, команды Python в этом файле выполняются перед отображением первого приглашения в интерактивном режиме. Файл выполняется в том же пространстве имён, где выполняются интерактивные команды, так что объекты, определённые или импортированные в нём, могут использоваться без квалификации в интерактивной сессии. Вы также можете изменить приглашения
sys.ps1иsys.ps2и обработкуsys.__interactivehook__в этом файле.Вызывает событие аудита аудита
cpython.run_startupс именем файла в качестве аргумента при вызове при запуске.
-
PYTHONOPTIMIZE -
Если это значение установлено в непустую строку, это эквивалентно указанию опции
-O. Если это значение установлено в целое число, это эквивалентно указанию опции-Oнесколько раз.
-
PYTHONBREAKPOINT -
Если это значение установлено, оно задаёт вызываемый объект с использованием обозначения точки с запятой. Модуль, содержащий вызываемый объект, будет импортирован, а затем вызываемый объект будет запущен по умолчанию реализацией
sys.breakpointhook(), которая сама вызывается встроенной функциейbreakpoint(). Если это значение не установлено или установлено в пустую строку, оно эквивалентно значению “pdb.set_trace”. Установка этого значения в строку “0” заставляет встроенную реализациюsys.breakpointhook()ничего не делать, а только сразу возвращаться.Новое в версии 3.7.
-
PYTHONDEBUG -
Если это значение установлено в непустую строку, это эквивалентно указанию опции
-d. Если это значение установлено в целое число, это эквивалентно указанию опции-dнесколько раз.
-
PYTHONOLDPARSER -
Если это значение установлено в непустую строку, активируется традиционный синтаксический анализатор LL(1).
См. также
-Xопциюoldparserи PEP 617.Устарело начиная с версии 3.9, будет удалено в версии 3.10.
-
PYTHONINSPECT -
Если это значение установлено в непустую строку, это эквивалентно указанию опции
-i.Эта переменная также может быть изменена кодом Python, используя
os.environ, чтобы принудительно включить режим инспектирования при завершении программы.
-
PYTHONUNBUFFERED -
Если это значение установлено в непустую строку, это эквивалентно указанию опции
-u.
-
PYTHONVERBOSE -
Если это значение установлено в непустую строку, это эквивалентно указанию опции
-v. Если это значение установлено в целое число, это эквивалентно указанию опции-vнесколько раз.
-
PYTHONCASEOK -
Если это значение установлено, Python игнорирует регистр в операторах
import. Это работает только в Windows и macOS.
-
PYTHONDONTWRITEBYTECODE -
Если это значение установлено в непустую строку, Python не будет пытаться записать файлы
.pycпри импорте исходных модулей. Это эквивалентно указанию опции-B.
-
PYTHONPYCACHEPREFIX -
Если это значение установлено, Python будет записывать файлы
.pycв зеркальном каталоге по этому пути, вместо каталогов__pycache__в структуре исходного дерева. Это эквивалентно указанию опции-Xpycache_prefix=PATH.Новое в версии 3.8.
-
PYTHONHASHSEED -
Если эта переменная не установлена или установлена в
random, для хеширования объектов str и bytes используется случайное значение.Если
PYTHONHASHSEEDустановлена в целое число, оно используется как фиксированное значение для генерации hash() для типов, охватываемых случайным хешированием.Это позволяет повторяемое хеширование, например, для самотестов самого интерпретатора или для того, чтобы группа процессов Python могли совместно использовать значения хеша.
Целое число должно быть десятичным числом в диапазоне [0,4294967295]. Указание значения 0 отключит случайное хеширование.
Новое в версии 3.2.3.
-
PYTHONINTMAXSTRDIGITS -
Если эта переменная установлена в целое число, она используется для настройки глобального ограничения длины строки при преобразовании целых чисел интерпретатора целое число.
Новое в версии 3.9.14.
-
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 – Директория site-packages для каждого пользователя
-
PYTHONUSERBASE -
Определяет
user base directory, используемую для вычисления пути кuser site-packages directoryи пути установки Distutils дляpython setup.py install --user.См. также
PEP 370 – Директория site-packages для каждого пользователя
-
PYTHONEXECUTABLE -
Если эта переменная окружения установлена,
sys.argv[0]будет установлено в её значение вместо значения, полученного через C-runtime. Работает только на macOS.
-
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 -
Если эта переменная окружения установлена в непустую строку, активируется режим отладки отладки модуля
asyncio.Новое в версии 3.4.
-
PYTHONMALLOC -
Устанавливает используемые Python-аллокаторы памяти и/или устанавливает отладочные крючки.
Устанавливает семейство аллокаторов памяти, используемых Python:
-
default: используйте стандартные аллокаторы памяти. -
malloc: используйте функциюmalloc()C-библиотеки для всех доменов (PYMEM_DOMAIN_RAW,PYMEM_DOMAIN_MEM,PYMEM_DOMAIN_OBJ). -
pymalloc: используйте аллокатор pymalloc для доменовPYMEM_DOMAIN_MEMиPYMEM_DOMAIN_OBJи используйте функциюmalloc()для доменаPYMEM_DOMAIN_RAW.
Установка отладочных крючков:
-
debug: устанавливает отладочные крючки поверх стандартных аллокаторов памяти. -
malloc_debug: аналогичноmalloc, но также устанавливает отладочные крючки. -
pymalloc_debug: аналогичноpymalloc, но также устанавливает отладочные крючки.
См. стандартные аллокаторы памяти и функцию
PyMem_SetupDebugHooks()(установка отладочных крючков на Python-аллокаторы памяти).Изменено в версии 3.7: Добавлен аллокатор
"default".Новое в версии 3.6.
-
-
PYTHONMALLOCSTATS -
Если установлено в непустую строку, Python будет выводить статистику аллокатора памяти pymalloc каждый раз, когда создается новая область pymalloc, и при завершении работы.
Эта переменная игнорируется, если переменная среды
PYTHONMALLOCиспользуется для принудительного использования аллокатораmalloc()C-библиотеки или если Python скомпилирован без поддержкиpymalloc.Изменено в версии 3.6: Эта переменная теперь также может использоваться в Python, скомпилированном в режиме релиз. Теперь она не имеет эффекта, если установлена в пустую строку.
-
PYTHONLEGACYWINDOWSFSENCODING -
Если установлено в непустую строку, кодировка и режим ошибок по умолчанию для файловой системы вернутся к значениям, установленным до версии 3.6, ‘mbcs’ и ‘replace’ соответственно. В противном случае используются новые значения по умолчанию ‘utf-8’ и ‘surrogatepass’.
Это также можно активировать во время выполнения с помощью
sys._enablelegacywindowsfsencoding().Доступность: Windows.
Новое в версии 3.6: См. PEP 529 для получения дополнительной информации.
-
PYTHONLEGACYWINDOWSSTDIO -
Если установлено в непустую строку, не используется новый читатель и писатель консоли. Это означает, что символы Unicode будут закодированы в соответствии с активной кодовой страницей консоли, а не с использованием utf-8.
Эта переменная игнорируется, если стандартные потоки перенаправлены (в файлы или каналы) вместо ссылки на буферы консоли.
Доступность: Windows.
Новое в версии 3.6.
-
PYTHONCOERCECLOCALE -
Если установлено в значение
0, заставляет основное приложение командной строки Python пропустить принудительное преобразование устаревших ASCII-базовых локалей C и POSIX к более мощному варианту на основе UTF-8.Если эта переменная не установлена (или установлена в значение, отличное от
0), переменная средыLC_ALLтакже не устанавливается, а текущая локаль, сообщаемая для категорииLC_CTYPE, — это либо локаль по умолчаниюC, либо явным образом ASCII-базовая локальPOSIX, тогда интерпретатор Python попытается настроить следующие локали для категорииLC_CTYPEв указанном порядке перед загрузкой интерпретатора:C.UTF-8C.utf8UTF-8
Если установка одной из этих категорий локалей окажется успешной, то переменная среды
LC_CTYPEтакже будет соответствующим образом установлена в текущей среде процесса перед инициализацией среды выполнения Python. Это гарантирует, что обновлённое значение видно как для самого интерпретатора, так и для других компонентов, учитывающих локаль, работающих в том же процессе (например, для библиотеки GNUreadline), а также в дочерних процессах (независимо от того, запускают ли эти процессы интерпретатор Python), а также в операциях, которые запрашивают окружение, а не текущую локаль C (например, в собственном методе Pythonlocale.getdefaultlocale()).Настройка одной из этих локалей (явным образом или через принудительное преобразование локалей, описанное выше) автоматически включает обработчик
surrogateescapeобработчик ошибок дляsys.stdinиsys.stdout(sys.stderrпродолжает использоватьbackslashreplace, как и в любой другой локали). Это поведение обработки потоков можно переопределить с помощьюPYTHONIOENCODING, как обычно.В отладочных целях установка
PYTHONCOERCECLOCALE=warnзаставит Python выводить сообщения об ошибках наstderr, если либо активируется принудительное преобразование локалей, либо если активна локаль, которая могла бы инициировать принудительное преобразование, когда интерпретатор Python уже инициирован.Также обратите внимание, что даже при отключённом принудительном преобразовании локалей или при невозможности найти подходящую целевую локаль,
PYTHONUTF8всё равно активируется по умолчанию в устаревших ASCII-базовых локалях. Обе функции должны быть отключены, чтобы принудительно заставить интерпретатор использоватьASCIIвместоUTF-8для системных интерфейсов.Доступность: *nix.
Новая в версии 3.7: См. PEP 538 для получения более подробной информации.
-
PYTHONDEVMODE -
Если эта переменная среды установлена в непустую строку, включить Режим разработки Python, добавляя дополнительные проверки во время выполнения, которые слишком дорогостоящие, чтобы быть включёнными по умолчанию.
Новая в версии 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включён для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, интерпретатор работает в своём режиме, учитывающем локаль по умолчанию.Установка любой другой непустой строки вызывает ошибку во время инициализации интерпретатора.
Если эта переменная среды вообще не установлена, интерпретатор по умолчанию использует текущие настройки локали, за исключением случаев, когда текущая локаль распознаётся как устаревшая ASCII-базовая локаль (как описано для
PYTHONCOERCECLOCALE), и принудительное преобразование локалей либо отключено, либо завершается неудачей. В таких устаревших локалях интерпретатор по умолчанию включит режим UTF-8, если явно не указано обратное.Также доступно в качестве параметра
-Xutf8.Новая в версии 3.7: См. PEP 540 для получения более подробной информации.
-
1.2.1. Переменные режима отладки
Установка этих переменных оказывает действие только в отладочной сборке Python.
-
PYTHONTHREADDEBUG -
Если установлена, Python выведет отладочную информацию о потоках.
Требуется настройка Python с опцией сборки
--with-pydebug.
-
PYTHONDUMPREFS -
Если установлена, Python выведет объекты и счётчики ссылок, которые всё ещё активны после завершения работы интерпретатора.
Требуется настройка Python с опцией сборки
--with-trace-refs.
© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/using/cmdline.html