Командная строка и окружение
Интерпретатор 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. Кроме того, если это поддерживается платформой, автоматически включаются автодополнение по клавише Tab и редактирование истории (см. раздел Настройка Readline).
См. также
Изменено в версии 3.4: Автоматическое включение автодополнения по клавише Tab и редактирования истории.
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).
-
-B -
Если этот параметр задан, Python не будет пытаться записывать файлы
.pycпри импорте исходных модулей. См. такжеPYTHONDONTWRITEBYTECODE.
-
--check-hash-based-pycs default|always|never -
Управлять проверкой файлов
.pycна основе хеша. См. Инвалидация кэшированного байт-кода. При значенииdefaultфайлы кэша байт-кода на основе хеша, как проверяемые, так и непроверяемые, проверяются в соответствии с семантикой по умолчанию. При значенииalwaysвсе файлы.pycна основе хеша, как проверяемые, так и непроверяемые, сверяются с соответствующим исходным файлом. При значенииneverфайлы.pycна основе хеша не сверяются с соответствующими исходными файлами.Этот параметр не влияет на семантику файлов
.pycна основе временных меток.
-
-d -
Включить вывод отладочной информации анализатора (только для экспертов). См. также переменную окружения
PYTHONDEBUG.Этот параметр требует отладочной сборки Python, иначе он игнорируется.
-
-E -
Игнорировать все переменные окружения
PYTHON*, напримерPYTHONPATHиPYTHONHOME, если они заданы.
-
-i -
Перейти в интерактивный режим после выполнения.
Использование параметра
-iприводит к переходу в интерактивный режим в следующих случаях:- Если в качестве первого аргумента передан скрипт
- Если используется параметр
-c - Если используется параметр
-m
Интерактивный режим запустится, даже если
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задана значением, отличным отrandom, поскольку рандомизация хешей включена по умолчанию.В предыдущих версиях Python этот параметр включает рандомизацию хешей, при которой значения
__hash__()объектов str и bytes «солятся» непредсказуемым случайным значением. Хотя в рамках отдельного процесса Python они остаются неизменными, их значения непредсказуемы при повторных запусках Python.Рандомизация хешей предназначена для защиты от отказа в обслуживании, вызванного специально подобранными входными данными, которые приводят к наихудшей производительности при создании dict со сложностью 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 – Каталог 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 -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 -
Пропустить первую строку исходного кода, что позволяет использовать формы
#!cmd, не предназначенные для Unix. Предназначено только для специфического хака 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определяет, будет ли механизм импорта игнорировать замороженные модули. Значениеonозначает, что они импортируются, аoff— что они игнорируются. По умолчанию используется значениеon, если это установленный Python (обычный случай). Если Python находится в разработке (запущен из дерева исходного кода), по умолчанию используется значениеoff. Обратите внимание, что замороженные модулиimportlib_bootstrapиimportlib_bootstrap_externalиспользуются всегда, даже если для этого флага задано значениеoff. См. такжеPYTHON_FROZEN_MODULES.Добавлено в версии 3.11.
-
-X perfвключает поддержку профилировщика Linuxperf. Если указан этот параметр, профилировщикperfсможет сообщать о вызовах Python. Этот параметр доступен только на некоторых платформах и ничего не делает, если текущая система его не поддерживает. Значение по умолчанию — «off». См. такжеPYTHONPERFSUPPORTи Поддержка Python в профилировщике Linux perf.Добавлено в версии 3.12.
-
-X perf_jitвключает поддержку профилировщика Linuxperfс поддержкой DWARF. Если указан этот параметр, профилировщикperfсможет сообщать о вызовах Python, используя информацию DWARF. Этот параметр доступен только на некоторых платформах и ничего не делает, если текущая система его не поддерживает. Значение по умолчанию — «off». См. такжеPYTHON_PERF_JIT_SUPPORTи Поддержка Python в профилировщике Linux perf.Добавлено в версии 3.13.
-
-X cpu_count=nпереопределяетos.cpu_count(),os.process_cpu_count()иmultiprocessing.cpu_count(). Значение n должно быть больше или равно 1. Этот параметр может быть полезен пользователям, которым необходимо ограничить ресурсы ЦП контейнерной системы. См. такжеPYTHON_CPU_COUNT. Если n равноdefault, переопределение не выполняется.Добавлено в версии 3.13.
-
-X presite=package.moduleуказывает модуль, который следует импортировать до выполнения модуляsiteи до создания модуля__main__. Поэтому импортированный модуль не является__main__. Это можно использовать для раннего выполнения кода во время инициализации Python. Для использования этого параметра Python необходимо собрать в режиме отладки. См. такжеPYTHON_PRESITE.Добавлено в версии 3.13.
-
-X gil=0,1принудительно отключает или включает GIL соответственно. Значение0доступно только в сборках, настроенных с параметром--disable-gil. См. такжеPYTHON_GILи CPython без глобальной блокировки интерпретатора.Добавлено в версии 3.13.
Также этот параметр позволяет передавать произвольные значения и получать их через словарь
sys._xoptions.Добавлено в версии 3.2.
Изменено в версии 3.9: Параметр
-X showalloccountудален.Изменено в версии 3.10: Параметр
-X oldparserудален. -
1.1.4. Управление цветом
По умолчанию интерпретатор Python настроен на использование цветов для выделения вывода в определенных ситуациях, например при отображении трассировок стека. Это поведение можно контролировать с помощью различных переменных окружения.
Если задать переменной окружения TERM значение dumb, цвета будут отключены.
Если задана переменная окружения FORCE_COLOR, цвета будут включены независимо от значения TERM. Это полезно в системах CI, которые не являются терминалами, но могут отображать управляющие последовательности ANSI.
Если задана переменная окружения NO_COLOR, Python отключит все цвета в выводе. Эта настройка имеет приоритет над FORCE_COLOR.
Все эти переменные окружения используются и другими инструментами для управления цветом вывода. Чтобы управлять цветом только в интерпретаторе Python, можно использовать переменную окружения PYTHON_COLORS. Эта переменная имеет приоритет над NO_COLOR, которая, в свою очередь, имеет приоритет над FORCE_COLOR.
1.1.5. Параметры, которые не следует использовать
-
-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) Генерируются события аудита.
Изменено в версии 3.13: По возможности используется PyREPL, в этом случае также выполняется
PYTHONSTARTUP. Генерируются события аудита.
-
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.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 — Каталог пакетов сайта для каждого пользователя
-
PYTHONUSERBASE -
Задаёт
user base directory, который используется для вычисления пути кuser site-packages directoryи путям установки дляpython -m pip install --user.См. также
PEP 370 — Каталог пакетов сайта для каждого пользователя
-
PYTHONEXECUTABLE -
Если эта переменная среды задана,
sys.argv[0]будет присвоено её значение вместо значения, полученного через среду выполнения C. Работает только в 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. Это эквивалентно параметру-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, а для областиPYMEM_DOMAIN_RAW— функциюmalloc(). -
mimalloc: использовать распределитель mimalloc для областейPYMEM_DOMAIN_MEMиPYMEM_DOMAIN_OBJ, а для областиPYMEM_DOMAIN_RAW— функциюmalloc().
Установка отладочных хуков:
-
debug: установить отладочные хуки поверх распределителей памяти по умолчанию. -
malloc_debug: то же, что иmalloc, но также установить отладочные хуки. -
pymalloc_debug: то же, что иpymalloc, но также установить отладочные хуки. -
mimalloc_debug: то же, что иmimalloc, но также установить отладочные хуки.
Добавлено в версии 3.6.
Изменено в версии 3.7: Добавлен распределитель
"default". -
-
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 для командной строки не будет преобразовывать устаревшие локали C и POSIX на основе ASCII в более функциональную альтернативу на основе UTF-8.Если эта переменная не задана (или задана в значение, отличное от
0), переменная среды переопределения локалиLC_ALLтакже не задана, а текущая локаль, сообщаемая для категорииLC_CTYPE, является локальюCпо умолчанию либо явно заданной локальюPOSIXна основе ASCII, то интерфейс командной строки 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для системных интерфейсов, необходимо отключить обе функции.Доступность: Unix.
Добавлено в версии 3.7: Подробнее см. PEP 538.
-
PYTHONDEVMODE -
Если для этой переменной среды задана непустая строка, включается режим разработки Python, который добавляет дополнительные проверки во время выполнения, слишком затратные для включения по умолчанию. Это эквивалентно установке параметра
-Xdev.Добавлено в версии 3.7.
-
PYTHONUTF8 -
Если задано значение
1, включается режим UTF-8 в Python.Если задано значение
0, режим UTF-8 в Python отключается.Любая другая непустая строка вызывает ошибку при инициализации интерпретатора.
Добавлено в версии 3.7.
-
PYTHONWARNDEFAULTENCODING -
Если для этой переменной среды задана непустая строка, при использовании кодировки по умолчанию, зависящей от локали, выдаётся предупреждение
EncodingWarning.Подробности см. в разделе Необязательное предупреждение о кодировке.
Добавлено в версии 3.10.
-
PYTHONNODEBUGRANGES -
Если эта переменная задана, она отключает включение таблиц, сопоставляющих каждой инструкции в объектах кода дополнительную информацию о местоположении (конечную строку, смещение начального столбца и смещение конечного столбца). Это полезно, когда требуется уменьшить размер объектов кода и файлов pyc, а также скрыть дополнительные визуальные указатели местоположения при отображении интерпретатором трассировок стека.
Добавлено в версии 3.11.
-
PYTHONPERFSUPPORT -
Если для этой переменной задано ненулевое значение, включается поддержка профилировщика Linux
perf, позволяющая ему обнаруживать вызовы Python.Если задано значение
0, поддержка профилировщика Linuxperfотключается.См. также параметр командной строки
-X perfи раздел Поддержка Python для профилировщика Linux perf.Добавлено в версии 3.12.
-
PYTHON_PERF_JIT_SUPPORT -
Если для этой переменной задано ненулевое значение, включается поддержка профилировщика Linux
perf, позволяющая ему обнаруживать вызовы Python с использованием информации DWARF.Если задано значение
0, поддержка профилировщика Linuxperfотключается.См. также параметр командной строки
-X perf_jitи раздел Поддержка Python для профилировщика Linux perf.Добавлено в версии 3.13.
-
PYTHON_CPU_COUNT -
Если для этой переменной задано положительное целое число, оно заменяет возвращаемые значения
os.cpu_count()иos.process_cpu_count().См. также параметр командной строки
-X cpu_count.Добавлено в версии 3.13.
-
PYTHON_FROZEN_MODULES -
Если для этой переменной задано значение
onилиoff, она определяет, будут ли замороженные модули игнорироваться механизмом импорта. Значениеonозначает, что они будут импортированы, аoff— что они будут игнорироваться. По умолчанию используется значениеonдля сборок без отладки (обычный случай) иoffдля отладочных сборок. Обратите внимание, что замороженные модулиimportlib_bootstrapиimportlib_bootstrap_externalиспользуются всегда, даже если для этого флага задано значениеoff.См. также параметр командной строки
-X frozen_modules.Добавлено в версии 3.13.
-
PYTHON_COLORS -
Если для этой переменной задано значение
1, интерпретатор будет выводить различные типы данных с цветовым оформлением. Значение0отключает это поведение. См. также раздел Управление цветом.Добавлено в версии 3.13.
-
PYTHON_BASIC_REPL -
Если эта переменная задана, интерпретатор не будет пытаться загружать Python-реализацию REPL, для которой требуются
cursesиreadline, а вместо этого будет использовать традиционную REPL на основе парсера.Добавлено в версии 3.13.
-
PYTHON_HISTORY -
Эта переменная окружения позволяет задать расположение файла
.python_history(по умолчанию он находится в каталоге пользователя.python_history).Добавлено в версии 3.13.
-
PYTHON_GIL -
Если для этой переменной задано значение
1, глобальная блокировка интерпретатора (GIL) будет принудительно включена. Значение0принудительно отключает GIL (для этого Python должен быть настроен с параметром сборки--disable-gil).См. также параметр командной строки
-X gil, который имеет приоритет над этой переменной, и раздел CPython без привязки к потокам.Добавлено в версии 3.13.
-
PYTHON_JIT -
В сборках, поддерживающих экспериментальную JIT-компиляцию, эта переменная позволяет принудительно отключить (
0) или включить (1) JIT при запуске интерпретатора.Добавлено в версии 3.13.
1.2.1. Переменные режима отладки
-
PYTHONDUMPREFS -
Если задана, Python после завершения работы интерпретатора выведет объекты и их счетчики ссылок, которые всё ещё существуют.
Для этого Python должен быть настроен с параметром сборки
--with-trace-refs.
-
PYTHONDUMPREFSFILE -
Если задана, Python запишет объекты и их счетчики ссылок, которые всё ещё существуют после завершения работы интерпретатора, в файл по пути, указанному значением этой переменной окружения.
Для этого Python должен быть настроен с параметром сборки
--with-trace-refs.Добавлено в версии 3.11.
-
PYTHON_PRESITE -
Если для этой переменной задано имя модуля, этот модуль будет импортирован на раннем этапе жизненного цикла интерпретатора — до выполнения модуля
siteи до создания модуля__main__. Поэтому импортированный модуль не будет считаться модулем__main__.Это можно использовать для выполнения кода на раннем этапе инициализации Python.
Чтобы импортировать подмодуль, укажите значение
package.module, как в операторе импорта.См. также параметр командной строки
-X presite, который имеет приоритет над этой переменной.Для этого Python должен быть настроен с параметром сборки
--with-pydebug.Добавлено в версии 3.13.
© 2001–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/using/cmdline.html