Командная строка и среда
Интерпретатор 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 -
Вывести краткое описание всех параметров командной строки и соответствующих переменных среды и завершить работу.
-
--help-env -
Вывести краткое описание переменных среды, специфичных для Python, и завершить работу.
Добавлена в версии 3.11.
-
--help-xoptions -
Вывести описание параметров
-X, специфичных для реализации, и завершить работу.Добавлена в версии 3.11.
-
--help-all -
Вывести полную информацию об использовании и завершить работу.
Добавлена в версии 3.11.
-
-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,-Pи-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.
-
-P -
Не добавлять потенциально небезопасный путь к
sys.path:-
python -m moduleкомандная строка: Не добавлять текущую рабочую директорию. -
python script.pyкомандная строка: Не добавлять директорию скрипта. Если это символическая ссылка, разрешать символические ссылки. -
python -c codeиpython(REPL) командные строки: Не добавлять пустую строку, что означает текущую рабочую директорию.
См. также переменную среды
PYTHONSAFEPATHи параметры-Eи-I(изоляция).Новое в версии 3.11.
-
-
-q -
Не отображать сообщения об авторских правах и версии, даже в интерактивном режиме.
Новое в версии 3.2.
-
-R -
Включить рандомизацию хэшей. Этот параметр действует только если переменная окружения
PYTHONHASHSEEDустановлена в0, так как рандомизация хэшей включена по умолчанию.В предыдущих версиях Python этот параметр включал рандомизацию хэшей, так что значения
__hash__()объектов str и bytes «солились» случайным, непредсказуемым значением. Хотя они остаются постоянными в рамках отдельного процесса Python, они непредсказуемы при повторном запуске Python.Рандомизация хэшей предназначена для защиты от атак отказа в обслуживании, вызванных специально выбранными входными данными, которые эксплуатируют худшие случаи производительности построения словаря, сложность O(n2). См. http://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), выводить сообщение для каждого файла, проверяемого при поиске модуля. Также предоставляет информацию о очистке модуля при выходе.Изменено в версии 3.10: Модуль
siteсообщает о специфичных для сайта путях и.pthфайлах, обрабатываемых.См. также
PYTHONVERBOSE.
-
-W arg -
Управление предупреждениями. Машина предупреждений Python по умолчанию выводит сообщения о предупреждениях в
sys.stderr.Самые простые настройки применяют определённое действие безусловно ко всем предупреждениям, выпущенным процессом (даже к тем, которые по умолчанию игнорируются):
-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эквивалентно-Wignore.Полная форма аргумента:
action:message:category:module:lineno
Пустые поля соответствуют всем значениям; последующие пустые поля можно опустить. Например,
-W ignore::DeprecationWarningигнорирует все предупреждения DeprecationWarning.Поле действие, как описано выше, но применяется только к предупреждениям, которые соответствуют остальным полям.
Поле сообщение должно соответствовать всему сообщению о предупреждении; это соответствие не учитывает регистр.
Поле категория соответствует категории предупреждения (например,
DeprecationWarning). Оно должно быть именем класса; тест на соответствие проверяет, является ли фактическая категория предупреждения сообщения подклассом указанной категории предупреждения.Поле модуль соответствует (полному квалифицированному) имени модуля; это соответствие учитывает регистр.
Поле номер строки соответствует номеру строки, где ноль соответствует всем номерам строк и, следовательно, эквивалентно пропущенному номеру строки.
Можно указать несколько опций
-W; если предупреждение соответствует нескольким опциям, выполняется действие последней соответствующей опции. Некорректные опции-Wигнорируются (хотя при первой возникшей ошибке выводится сообщение о некорректных опциях).Предупреждения также можно контролировать с помощью переменной среды
PYTHONWARNINGSи изнутри программы Python с помощью модуляwarnings. Например, функцияwarnings.filterwarnings()может использоваться для применения регулярного выражения к сообщению о предупреждении.См. Фильтр предупреждений и Описание фильтров предупреждений для получения более подробной информации.
-
-x -
Пропустить первую строку исходного кода, что позволяет использовать не-Unix-формы
#!cmd. Это предназначено только для специфичного для DOS хэка.
-
-X -
Зарезервировано для различных опций, специфичных для реализации. CPython в настоящее время определяет следующие возможные значения:
-
-X faulthandlerдля включенияfaulthandler. Также см.PYTHONFAULTHANDLER. -
-X showrefcountдля вывода общей ссылки и количества используемых блоков памяти при завершении программы или после каждой команды в интерактивном интерпретаторе. Это работает только в отладочных сборках. -
-X tracemallocдля запуска отслеживания выделения памяти Python с помощью модуляtracemalloc. По умолчанию в трассировке исключения хранится только самый последний кадр. Используйте-X tracemalloc=NFRAMEдля начала отслеживания с ограничением трассировки в NFRAME кадрах. Дополнительную информацию см. вtracemalloc.start()иPYTHONTRACEMALLOC. -
-X int_max_str_digitsнастраивает ограничение длины целых строк. Также см.PYTHONINTMAXSTRDIGITS. -
-X importtimeдля отображения времени, необходимого для каждого импорта. Отображаются имя модуля, накопленное время (включая вложенные импорты) и собственное время (исключая вложенные импорты). Обратите внимание, что вывод может быть некорректным в многопоточных приложениях. Типовое использованиеpython3 -X importtime -c 'import asyncio'. Также см.PYTHONPROFILEIMPORTTIME. -
-X dev: включает режим разработки Python, добавляя дополнительные проверки во время выполнения, которые слишком дорого обходятся для включения по умолчанию. -
-X utf8включает режим UTF-8 Python.-X utf8=0явно отключает режим UTF-8 Python (даже когда он бы активировался автоматически). Также см.PYTHONUTF8. -
-X pycache_prefix=PATHвключает запись.pycфайлов в параллельном дереве с корнем в указанном каталоге вместо каталога кода. Также см.PYTHONPYCACHEPREFIX. -
-X warn_default_encodingвыводитEncodingWarning, когда используется локальный кодирование по умолчанию для открытия файлов. Также см.PYTHONWARNDEFAULTENCODING. -
-X no_debug_rangesотключает включение таблиц, сопоставляющих дополнительную информацию о местоположении (конец строки, начальный и конечный смещения столбца) с каждой инструкцией в объектах кода. Это полезно, когда требуются более компактные объекты кода и файлы pyc, а также подавление дополнительных визуальных индикаторов местоположения при отображении отладочных трассировок интерпретатором. Также см.PYTHONNODEBUGRANGES. -
-X frozen_modulesопределяет, игнорируются ли замороженные модули механизмом импорта. Значение «on» означает, что они импортируются, а «off» означает, что они игнорируются. По умолчанию это «on», если это установленный Python (обычный случай). Если он находится в стадии разработки (запущен из дерева исходных текстов), то значение по умолчанию «off». Обратите внимание, что замороженные модули «importlib_bootstrap» и «importlib_bootstrap_external» всегда используются, даже если этот флаг установлен в «off».
Он также позволяет передавать произвольные значения и получать их через словарь
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.10: Опция
-X warn_default_encoding. Удалена опция-X oldparser.Введено в версии 3.11: Опция
-X no_debug_ranges.Введено в версии 3.11: Опция
-X frozen_modules.Введено в версии 3.11: Опция
-X int_max_str_digits. -
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.
-
PYTHONSAFEPATH -
Если это значение установлено не пустой строкой, потенциально небезопасный путь не будет добавлен к
sys.path: подробности см. в параметре-P.Новая версия с 3.11.
-
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несколько раз.
-
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установлено целочисленным значением, оно используется как фиксированное зерно для генерации хешей типов, охваченных случайностью хеширования.Цель состоит в том, чтобы обеспечить повторяемость хеширования, например, для самотестов интерпретатора или для того, чтобы группа процессов Python делила значения хешей.
Целое число должно быть десятичным числом в диапазоне [0,4294967295]. Установка значения 0 отключит случайность хеширования.
Новая версия с 3.2.3.
-
PYTHONINTMAXSTRDIGITS -
Если эта переменная установлена целочисленным значением, используется для настройки глобального ограничения длины строки при преобразовании целых чисел интерпретатора.
Новая версия с 3.11.
-
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(). Это эквивалентно установке параметра-Xtracemalloc.Введено в версии 3.4.
-
PYTHONPROFILEIMPORTTIME -
Если эта переменная среды установлена в непустую строку, Python покажет, сколько времени занял каждый импорт. Это эквивалентно установке параметра
-Ximporttime.Введено в версии 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, но также устанавливает отладочные крючки.
Изменено в версии 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 CLI попытается настроить следующие локали для категорииLC_CTYPEв указанном порядке до загрузки интерпретатора runtime:C.UTF-8C.utf8UTF-8
Если установка одной из этих категорий локалей завершится успешно, переменная среды
LC_CTYPEтакже будет установлена соответствующим образом в текущей среде процесса до инициализации Python runtime. Это гарантирует, что обновлённое значение будет видно как интерпретатором, так и другими компонентами, работающими с поддержкой локали в одном процессе (например, библиотекой GNUreadline), а также в дочерних процессах (независимо от того, запускают ли эти процессы интерпретатор Python), а также в операциях запроса среды, а не текущей C локали (например, собственной функции Pythonlocale.getdefaultlocale()).Настройка одной из этих локалей (явно или посредством вышеупомянутого неявного приведения локалей) автоматически включает обработчик ошибок
surrogateescapeобработчик ошибок дляsys.stdinиsys.stdout(sys.stderrпо-прежнему используетbackslashreplace, как и в любой другой локали). Это поведение обработки потоков можно переопределить, используяPYTHONIOENCODINGкак обычно.Для целей отладки установка
PYTHONCOERCECLOCALE=warnприведет к выводу сообщений об ошибках вstderr, если либо активация приведения локалей, либо если локаль, которая должна была вызвать приведение, всё ещё активна при инициализации Python runtime.Также обратите внимание, что даже когда приведение локалей отключено или оно не находит подходящую целевую локаль,
PYTHONUTF8по-прежнему будет активироваться по умолчанию в устаревших ASCII-основанных локалях. Оба параметра необходимо отключить, чтобы принудительно заставить интерпретатор использоватьASCIIвместоUTF-8для интерфейсов системы.Доступность: Unix.
Введено в версии 3.7: См. PEP 538 для получения более подробной информации.
-
PYTHONDEVMODE -
Если эта переменная среды установлена на значение, отличное от пустой строки, включить Режим разработки Python, добавляя дополнительные проверки во время выполнения, которые слишком затратны для включения по умолчанию. Это эквивалентно установке параметра
-Xdev.Введено в версии 3.7.
-
PYTHONUTF8 -
Если установлено значение
1, включить Режим UTF-8 Python.Если установлено значение
0, отключить Режим UTF-8 Python.Установка любого другого значения, отличного от пустой строки, вызывает ошибку во время инициализации интерпретатора.
Введено в версии 3.7.
-
PYTHONWARNDEFAULTENCODING -
Если эта переменная среды установлена на значение, отличное от пустой строки, вывести
EncodingWarning, когда используется локальная кодировка по умолчанию.См. Включение предупреждений EncodingWarning для получения дополнительной информации.
Введено в версии 3.10.
-
PYTHONNODEBUGRANGES -
Если эта переменная установлена, она отключает включение таблиц, сопоставляющих дополнительную информацию о местоположении (конец строки, начальный и конечный смещения столбца) каждой инструкции в объектах кода. Это полезно, когда требуется меньше объектов кода и файлов pyc, а также для подавления дополнительных визуальных индикаторов местоположения при отображении трассировок интерпретатором.
Введено в версии 3.11.
1.2.1. Переменные режима отладки
-
PYTHONTHREADDEBUG -
При установке Python будет выводить отладочную информацию о потоках в stdout.
Требуется отладочная сборка Python.
Устарело начиная с версии 3.10, будет удалено в версии 3.12.
-
PYTHONDUMPREFS -
Если установлено, Python выведет объекты и счётчики ссылок, которые всё ещё активны после завершения работы интерпретатора.
Требуется конфигурация Python с параметром сборки
--with-trace-refs.
-
PYTHONDUMPREFSFILE=FILENAME -
Если установлено, Python сохранит объекты и счётчики ссылок, которые всё ещё активны после завершения работы интерпретатора, в файл с именем FILENAME.
Требуется конфигурация Python с параметром сборки
--with-trace-refs.Введено в версии 3.11.
© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/using/cmdline.html