Spec-Zone.ru › Python 3.12

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

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

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

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

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

python [-bBdEhiIOPqRsSuvVWx?] [-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 или bytearray с str или bytes с int. Выводить ошибку при указании параметра дважды (-bb).

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

-B

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

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

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

Семантика файлов .pyc на основе времени не изменяется этим параметром.

-d

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

Этот параметр требует отладочной сборки Python, в противном случае он игнорируется.

-E

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

См. также параметры -P и -I (изолированный режим).

-i

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

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

-I

Запуск Python в изолированном режиме. Это также подразумевает параметры -E, -P и -s.

В изолированном режиме sys.path не содержит ни директорию скрипта, ни директорию пользовательских пакетов. Все переменные среды 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.2.3.

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

-s

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

См. также PYTHONNOUSERSITE.

См. также

PEP 370 – Директория пользовательских пакетов

-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
-Wall      # Same as -Walways
-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.

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

  • -X showrefcount для вывода общего счётчика ссылок и количества используемых блоков памяти при завершении программы или после каждой команды в интерактивном интерпретаторе. Это работает только в отладочных сборках.

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

  • -X tracemalloc для начала отслеживания выделения памяти Python с использованием модуля tracemalloc. По умолчанию в трассировке исключения сохраняется только последний кадр. Используйте -X tracemalloc=NFRAME для начала отслеживания с ограничением трассировки на NFRAME кадров. См. tracemalloc.start() и PYTHONTRACEMALLOC для получения дополнительной информации.

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

  • -X int_max_str_digits настраивает ограничение длины преобразования целых чисел в строки. См. также PYTHONINTMAXSTRDIGITS.

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

  • -X importtime для отображения продолжительности каждого импорта. Он отображает имя модуля, накопленное время (включая вложенные импорты) и собственное время (исключая вложенные импорты). Обратите внимание, что его вывод может быть разбит в многопоточной приложении. Типичное использование — python3 -X importtime -c 'import asyncio'. См. также PYTHONPROFILEIMPORTTIME.

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

  • -X dev: включает режим разработки Python, вводя дополнительные проверки во время выполнения, которые слишком дороги для включения по умолчанию. См. также PYTHONDEVMODE.

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

  • -X utf8 включает режим UTF-8 Python. -X utf8=0 явно отключает режим UTF-8 Python (даже когда он должен активироваться автоматически). См. также PYTHONUTF8.

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

  • -X pycache_prefix=PATH позволяет записывать .pyc файлы в параллельном дереве с корнем в указанном каталоге, вместо записи в дерево кода. См. также PYTHONPYCACHEPREFIX.

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

  • -X warn_default_encoding выводит EncodingWarning при использовании локали-специфичной кодировки по умолчанию для открытия файлов. См. также PYTHONWARNDEFAULTENCODING.

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

  • -X no_debug_ranges отключает включение таблиц, сопоставляющих дополнительную информацию о расположении (конец строки, смещение начала столбца и смещение конца столбца) с каждой инструкцией в объектах кода. Это полезно, когда требуются меньшие объекты кода и файлы pyc, а также для подавления дополнительных визуальных указателей расположения при отображении трассировок интерпретатором. См. также PYTHONNODEBUGRANGES.

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

  • -X frozen_modules определяет, игнорируются ли замороженные модули механизмом импорта. Значение «вкл» означает, что они импортируются, а «выкл» означает, что они игнорируются. По умолчанию — «вкл», если это установленный Python (обычный случай). Если он находится в стадии разработки (запуск из дерева исходных кодов), то по умолчанию — «выкл». Обратите внимание, что замороженные модули «importlib_bootstrap» и «importlib_bootstrap_external» всегда используются, даже если этот флаг установлен в «выкл».

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

  • -X perf включает поддержку профилировщика Linux perf. При указании этой опции профилировщик perf сможет сообщать о вызовах Python. Эта опция доступна только на некоторых платформах и ничего не сделает, если она не поддерживается текущей системой. Значение по умолчанию — «выкл». См. также PYTHONPERFSUPPORT и Поддержка Python для профилировщика perf Linux.

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

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

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

Изменено в версии 3.9: Удалена опция -X showalloccount.

Изменено в версии 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.

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.

Эта переменная окружения требует отладки Python, в противном случае она игнорируется.

PYTHONINSPECT

Если установлено в непустую строку, оно эквивалентно указанию параметра -i.

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

Вызывает событие аудита аудита cpython.run_stdin без аргументов.

Изменено в версии 3.12.5: (также 3.11.10, 3.10.15, 3.9.20 и 3.8.20) Вызывает события аудита.

PYTHONUNBUFFERED

Если установлено в непустую строку, оно эквивалентно указанию параметра -u.

PYTHONVERBOSE

Если установлено в непустую строку, оно эквивалентно указанию параметра -v. Если установлено в целое число, оно эквивалентно многократному указанию параметра -v.

PYTHONCASEOK

Если установлено, Python игнорирует регистр в операторах import. Это работает только в Windows и macOS.

PYTHONDONTWRITEBYTECODE

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

PYTHONPYCACHEPREFIX

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

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

PYTHONHASHSEED

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

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

Его назначение — обеспечить повторяемость хэширования, например, для самотестов самого интерпретатора или для того, чтобы группа процессов Python могли использовать общие значения хэшей.

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

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

PYTHONINTMAXSTRDIGITS

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

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

END_OF_DOCUMENT_MARKER
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 и путей установки для python -m pip 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=all      # Same as PYTHONWARNINGS=always
PYTHONWARNINGS=module   # Warn once per calling module
PYTHONWARNINGS=once     # Warn once per Python process
PYTHONWARNINGS=ignore   # Never warn

Для получения более подробной информации см. Фильтр предупреждений и Описание фильтров предупреждений.

PYTHONFAULTHANDLER

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

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

PYTHONTRACEMALLOC

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

Добавлена в версии 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, но также установить отладочные крючки.

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

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

PYTHONMALLOCSTATS

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

Эта переменная игнорируется, если переменная окружения PYTHONMALLOC используется для принудительного использования аллокатора malloc() C-библиотеки или если Python сконфигурирован без поддержки pymalloc.

Изменено в версии 3.6: Эта переменная теперь также может использоваться в режиме Python, скомпилированном в релизном варианте. Теперь не имеет эффекта, если установлена в пустую строку.

END_OF_DOCUMENT_MARKER
PYTHONLEGACYWINDOWSFSENCODING

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

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

Доступность: Windows.

Добавлен в версии 3.6: См. PEP 529 для получения более подробной информации.

PYTHONLEGACYWINDOWSSTDIO

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

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

Доступность: Windows.

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

PYTHONCOERCECLOCALE

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

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

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

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

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

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

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

Доступность: Unix.

Добавлен в версии 3.7: См. PEP 538 для получения более подробной информации.

PYTHONDEVMODE

Если эта переменная среды установлена в ненулевое значение, включить Режим разработки Python, вводя дополнительные проверки во время выполнения, которые слишком дорогостоящие для включения по умолчанию. Это эквивалентно установке параметра -X dev.

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

PYTHONUTF8

Если установлено значение 1, включить режим Python UTF-8.

Если установлено значение 0, отключить режим Python UTF-8.

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

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

PYTHONWARNDEFAULTENCODING

Если эта переменная среды установлена в ненулевое значение, выводится предупреждение EncodingWarning при использовании кодировки по умолчанию, специфичной для локали.

См. Включённое предупреждение EncodingWarning для получения подробностей.

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

PYTHONNODEBUGRANGES

Если эта переменная установлена, это отключает включение таблиц, сопоставляющих дополнительные сведения о расположении (конец строки, смещение начальной колонки и смещение конечной колонки) каждой инструкции в объектах кода. Это полезно, когда требуются более компактные объекты кода и файлы pyc, а также при подавлении дополнительных визуальных индикаторов расположения, когда интерпретатор отображает отладочные сообщения.

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

PYTHONPERFSUPPORT

Если эта переменная установлена в ненулевое значение, это включает поддержку профилировщика Linux perf, чтобы Python вызовы могли быть обнаружены им.

Если установлено значение 0, отключение поддержки профилировщика Linux perf.

См. также параметр командной строки -X perf и Поддержка Python для профилировщика Linux perf.

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

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

PYTHONDUMPREFS

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

Требуется настройка Python с параметром сборки --with-trace-refs.

PYTHONDUMPREFSFILE=FILENAME

Если установлена, Python будет выводить объекты и счётчики ссылок, которые всё ещё живы после завершения работы интерпретатора, в файл под названием FILENAME.

Требуется настройка Python с параметром сборки --with-trace-refs.

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

© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/using/cmdline.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API