Командная строка и окружение
Интерпретатор 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 -
Если скрипт передан первым аргументом или используется параметр
-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.Рандомизация хешей предназначена для защиты от отказа в обслуживании, вызванного специально подобранными входными данными, использующими наихудшую производительность создания 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 – Каталог пакетов сайта для каждого пользователя
-
-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.Поле action имеет описанное выше значение, но применяется только к предупреждениям, соответствующим остальным полям.
Поле message должно соответствовать всему тексту предупреждения; при сопоставлении регистр не учитывается.
Поле category соответствует категории предупреждения (например,
DeprecationWarning). Здесь должно быть указано имя класса; проверяется, является ли фактическая категория предупреждения подклассом заданной категории предупреждения.Поле module соответствует имени модуля (с полным путём); при сопоставлении учитывается регистр.
Поле lineno соответствует номеру строки; ноль соответствует всем номерам строк и потому эквивалентен отсутствующему номеру строки.
Можно указать несколько параметров
-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определяет, будут ли замороженные модули игнорироваться механизмом импорта. Значение «on» означает, что они импортируются, а «off» — что они игнорируются. По умолчанию используется «on», если это установленная версия Python (обычный случай). Если Python находится в разработке (запущен из дерева исходного кода), по умолчанию используется «off». Обратите внимание, что замороженные модули «importlib_bootstrap» и «importlib_bootstrap_external» используются всегда, даже если этому флагу присвоено значение «off».Добавлено в версии 3.11.
-
-X perfвключает поддержку профилировщика Linuxperf. Если указан этот параметр, профилировщикperfсможет сообщать о вызовах Python. Этот параметр доступен только на некоторых платформах и ничего не делает, если текущая система его не поддерживает. По умолчанию используется значение «off». См. такжеPYTHONPERFSUPPORTи Поддержка профилировщика Linux perf в Python.Добавлено в версии 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__внутри дерева исходных файлов. Это эквивалентно указанию параметра-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 — каталог site-packages для каждого пользователя
-
PYTHONUSERBASE -
Задаёт
user base directory, который используется для вычисления пути кuser site-packages directoryи путям установки дляpython -m pip install --user.См. также
PEP 370 — каталог site-packages для каждого пользователя
-
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: для областейPYMEM_DOMAIN_MEMиPYMEM_DOMAIN_OBJиспользуется распределитель pymalloc, а для областиPYMEM_DOMAIN_RAW— функцияmalloc().
Установка отладочных перехватчиков:
-
debug: установить отладочные перехватчики поверх распределителей памяти по умолчанию. -
malloc_debug: то же, чтоmalloc, но также устанавливает отладочные перехватчики. -
pymalloc_debug: то же, чтоpymalloc, но также устанавливает отладочные перехватчики.
Добавлено в версии 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и раздел Поддержка профилировщика perf в Linux в Python.Добавлено в версии 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