Командная строка и окружение
Интерпретатор CPython проверяет командную строку и окружение на наличие различных параметров.
Особенность реализации CPython: Схемы командной строки в других реализациях могут отличаться. Дополнительные сведения см. в разделе Другие реализации.
1.1. Командная строка
При запуске Python можно указать любой из следующих параметров:
python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]
Наиболее распространённый вариант использования — конечно же, простой запуск скрипта:
python myscript.py
1.1.1. Параметры интерфейса
Интерфейс интерпретатора похож на интерфейс оболочки UNIX, но предоставляет несколько дополнительных способов вызова:
- При запуске со стандартным вводом, подключённым к устройству tty, интерпретатор запрашивает команды и выполняет их до чтения EOF (символа конца файла; его можно ввести с помощью Ctrl-D в UNIX или Ctrl-Z, Enter в Windows).
- При запуске с аргументом в виде имени файла или с файлом в качестве стандартного ввода интерпретатор читает и выполняет скрипт из этого файла.
- При запуске с аргументом в виде имени каталога интерпретатор читает и выполняет скрипт с соответствующим именем из этого каталога.
- При запуске с
-c commandинтерпретатор выполняет операторы Python, заданные в виде command. Здесь command может содержать несколько операторов, разделённых символами новой строки. Начальные пробелы в операторах Python имеют значение! - При запуске с
-m module-nameуказанный модуль ищется в пути модулей Python и выполняется как скрипт.
В неинтерактивном режиме весь ввод разбирается до начала выполнения.
Параметр интерфейса завершает список параметров, обрабатываемых интерпретатором; все последующие аргументы попадут в sys.argv — обратите внимание, что первый элемент с индексом ноль (sys.argv[0]) представляет собой строку, отражающую источник программы.
-
-c <command> -
Выполнить код Python из command. command может содержать один или несколько операторов, разделённых символами новой строки; начальные пробелы имеют такое же значение, как и в обычном коде модуля.
Если указан этот параметр, первым элементом
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, содержащийся в script, который должен быть путём в файловой системе (абсолютным или относительным) к файлу 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.
-
-E -
Игнорировать все переменные окружения
PYTHON*, напримерPYTHONPATHиPYTHONHOME, если они заданы.
-
-i -
Если скрипт передан в качестве первого аргумента или используется параметр
-c, перейти в интерактивный режим после выполнения скрипта или команды, даже еслиsys.stdinне является терминалом. ФайлPYTHONSTARTUPне считывается.Это может быть полезно для проверки глобальных переменных или трассировки стека, если скрипт вызывает исключение. См. также
PYTHONINSPECT.
-
-I -
Запустить Python в изолированном режиме. Это также подразумевает параметры
-E,-Pи-s.В изолированном режиме
sys.pathне содержит ни каталог скрипта, ни каталог пользовательских site-packages. Все переменные окруженияPYTHON*также игнорируются. Могут применяться дополнительные ограничения, чтобы не допустить внедрения пользователем вредоносного кода.Добавлено в версии 3.4.
-
-O -
Удалить инструкции assert и любой код, зависящий от значения
__debug__. Дополнить имя скомпилированных файлов (байт-код), добавив.opt-1перед расширением.pyc(см. PEP 488). См. такжеPYTHONOPTIMIZE.Изменено в версии 3.5: Изменять имена файлов
.pycв соответствии с PEP 488.
-
-OO -
Выполнить действие
-O, а также удалить строки документации. Дополнить имя скомпилированных файлов (байт-код), добавив.opt-2перед расширением.pyc(см. PEP 488).Изменено в версии 3.5: Изменять имена файлов
.pycв соответствии с PEP 488.
-
-P -
Не добавлять потенциально небезопасный путь в
sys.path:-
python -m moduleкомандная строка: не добавлять текущий рабочий каталог. -
python script.pyкомандная строка: не добавлять каталог скрипта. Если это символическая ссылка, разрешить символические ссылки. -
python -c codeиpython(REPL) командные строки: не добавлять пустую строку, обозначающую текущий рабочий каталог.
См. также переменную окружения
PYTHONSAFEPATHи параметры-Eи-I(изолированный режим).Добавлено в версии 3.11.
-
-
-q -
Не отображать сообщения об авторских правах и версии даже в интерактивном режиме.
Добавлено в версии 3.2.
-
-R -
Включить рандомизацию хешей. Этот параметр действует только в том случае, если переменной окружения
PYTHONHASHSEEDприсвоено значение0, поскольку рандомизация хешей включена по умолчанию.В предыдущих версиях Python этот параметр включал рандомизацию хешей, при которой значения
__hash__()объектов str и bytes «солились» непредсказуемым случайным значением. Хотя они остаются неизменными в рамках отдельного процесса Python, их нельзя предсказать при повторных запусках Python.Рандомизация хешей предназначена для защиты от отказа в обслуживании, вызванного специально подобранными входными данными, использующими худшую производительность построения 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 -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 -
Пропустить первую строку исходного кода, что позволяет использовать варианты
#!cmd, не относящиеся к Unix. Предназначено только для специального трюка с DOS.
-
-X -
Зарезервировано для различных параметров, зависящих от реализации. В настоящее время CPython определяет следующие возможные значения:
-
-X faulthandlerдля включенияfaulthandler. См. такжеPYTHONFAULTHANDLER. -
-X showrefcountдля вывода общего количества ссылок и числа используемых блоков памяти при завершении программы или после каждого выражения в интерактивном интерпретаторе. Работает только в отладочных сборках. -
-X tracemallocдля начала трассировки выделения памяти Python с помощью модуляtracemalloc. По умолчанию в трассировке сохраняется только самый последний кадр. Используйте-X tracemalloc=NFRAME, чтобы начать трассировку с ограничением трассировки стека в NFRAME кадров. Дополнительные сведения см. вtracemalloc.start()иPYTHONTRACEMALLOC. -
-X int_max_str_digitsнастраивает ограничение длины преобразования целого числа в строку. См. такжеPYTHONINTMAXSTRDIGITS. -
-X importtimeдля отображения длительности каждого импорта. Выводятся имя модуля, суммарное время (включая вложенные импорты) и собственное время (без вложенных импортов). Обратите внимание, что в многопоточном приложении вывод может быть некорректным. Типичное использование:python3 -X importtime -c 'import asyncio'. См. такжеPYTHONPROFILEIMPORTTIME. -
-X dev: включить режим разработки Python, добавляющий дополнительные проверки во время выполнения, которые слишком затратны, чтобы включать их по умолчанию. См. такжеPYTHONDEVMODE. -
-X utf8включает режим UTF-8 Python.-X utf8=0явно отключает режим UTF-8 Python (даже если в противном случае он включился бы автоматически). См. такжеPYTHONUTF8. -
-X pycache_prefix=PATHвключает запись файлов.pycв параллельную иерархию каталогов, корнем которой является указанный каталог, вместо дерева кода. См. такжеPYTHONPYCACHEPREFIX. -
-X warn_default_encodingвыдаёт предупреждениеEncodingWarning, если для открытия файлов используется кодировка по умолчанию, зависящая от локали. См. такжеPYTHONWARNDEFAULTENCODING. -
-X no_debug_rangesотключает добавление таблиц, сопоставляющих дополнительные сведения о местоположении (конечную строку, смещение начального столбца и смещение конечного столбца) каждой инструкции в объектах кода. Это полезно, если нужны более компактные объекты кода и файлы pyc, а также позволяет скрыть дополнительные визуальные индикаторы местоположения при отображении трассировок стека интерпретатором. См. такжеPYTHONNODEBUGRANGES. -
-X frozen_modulesопределяет, игнорируются ли замороженные модули механизмом импорта. Значение «on» означает, что они импортируются, а «off» — что игнорируются. По умолчанию используется значение «on», если Python установлен (обычный случай). Если Python находится в разработке (запущен из дерева исходного кода), по умолчанию используется значение «off». Обратите внимание, что замороженные модули «importlib_bootstrap» и «importlib_bootstrap_external» используются всегда, даже если этому флагу присвоено значение «off».
Также позволяет передавать произвольные значения и получать их через словарь
sys._xoptions.Добавлено в версии 3.2.
Изменено в версии 3.3: Добавлен параметр
-X faulthandler.Изменено в версии 3.4: Добавлены параметры
-X showrefcountи-X tracemalloc.Изменено в версии 3.6: Добавлен параметр
-X showalloccount.Изменено в версии 3.7: Добавлены параметры
-X importtime,-X devи-X utf8.Изменено в версии 3.8: Добавлен параметр
-X pycache_prefix. Теперь параметр-X devрегистрирует исключенияclose()в деструктореio.IOBase.Изменено в версии 3.9: При использовании параметра
-X devпроверяются аргументы encoding и errors при операциях кодирования и декодирования строк.Параметр
-X showalloccountудалён.Изменено в версии 3.10: Добавлен параметр
-X warn_default_encoding. Параметр-X oldparserудалён.Изменено в версии 3.11: Добавлены параметры
-X no_debug_ranges,-X frozen_modulesи-X int_max_str_digits. -
1.1.4. Параметры, которые не следует использовать
-
-J -
Зарезервировано для использования в Jython.
1.2. Переменные среды
Эти переменные среды влияют на поведение Python; они обрабатываются до переключателей командной строки, кроме -E или -I. Принято считать, что при конфликте переключатели командной строки имеют приоритет над переменными среды.
-
PYTHONHOME -
Изменяет расположение стандартных библиотек Python. По умолчанию библиотеки ищутся в
prefix/lib/pythonversionиexec_prefix/lib/pythonversion, гдеprefixиexec_prefix— каталоги, зависящие от установки; для обоих по умолчанию используется/usr/local.Если
PYTHONHOMEзадана как один каталог, её значение заменяет иprefix, иexec_prefix. Чтобы задать для них разные значения, установитеPYTHONHOMEвprefix:exec_prefix.
-
PYTHONPATH -
Дополняет путь поиска по умолчанию для файлов модулей. Формат такой же, как у
PATHоболочки: один или несколько путей к каталогам, разделённыхos.pathsep(например, двоеточиями в Unix или точками с запятой в Windows). Несуществующие каталоги игнорируются без уведомления.Помимо обычных каталогов отдельные элементы
PYTHONPATHмогут указывать на zip-файлы с модулями Python, написанными на чистом Python (в исходном или скомпилированном виде). Модули расширений нельзя импортировать из zip-файлов.Путь поиска по умолчанию зависит от установки, но обычно начинается с
prefix/lib/pythonversion(см.PYTHONHOMEвыше). Он всегда добавляется в конецPYTHONPATH.В путь поиска перед
PYTHONPATHбудет добавлен дополнительный каталог, как описано выше в разделе Параметры интерфейса. Путь поиска можно изменять из программы Python с помощью переменнойsys.path.
-
PYTHONSAFEPATH -
Если задана непустая строка, потенциально небезопасный путь не добавляется в начало
sys.path: подробности см. в описании параметра-P.Добавлено в версии 3.11.
-
PYTHONPLATLIBDIR -
Если задана непустая строка, она переопределяет значение
sys.platlibdir.Добавлено в версии 3.9.
-
PYTHONSTARTUP -
Если это имя доступного для чтения файла, команды Python из этого файла выполняются до отображения первого приглашения в интерактивном режиме. Файл выполняется в том же пространстве имён, что и интерактивные команды, поэтому определённые или импортированные в нём объекты можно использовать в интерактивном сеансе без уточнения имён. В этом файле также можно изменить приглашения
sys.ps1иsys.ps2, а также хукsys.__interactivehook__.При вызове во время запуска возбуждает событие аудита
cpython.run_startup, передавая имя файла в качестве аргумента.
-
PYTHONOPTIMIZE -
Если задана непустая строка, это равносильно указанию параметра
-O. Если задано целое число, это равносильно многократному указанию-O.
-
PYTHONBREAKPOINT -
Если задана, она содержит имя вызываемого объекта в формате пути с точками. Модуль, в котором находится вызываемый объект, будет импортирован, после чего вызываемый объект будет запущен реализацией по умолчанию
sys.breakpointhook(), которую вызывает встроенная функцияbreakpoint(). Если переменная не задана или задана как пустая строка, используется значение «pdb.set_trace». Если задать строку «0», реализация по умолчаниюsys.breakpointhook()ничего не делает и сразу возвращает управление.Добавлено в версии 3.7.
-
PYTHONDEBUG -
Если задана непустая строка, это равносильно указанию параметра
-d. Если задано целое число, это равносильно многократному указанию-d.
-
PYTHONINSPECT -
Если задана непустая строка, это равносильно указанию параметра
-i.Эту переменную также можно изменить из кода Python с помощью
os.environ, чтобы принудительно включить режим инспектирования при завершении программы.Возбуждает событие аудита
cpython.run_stdinбез аргументов.Изменено в версии 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=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().
Устанавливает отладочные хуки:
-
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.
1.2.1. Переменные режима отладки
-
PYTHONTHREADDEBUG -
Если задана, Python будет выводить отладочную информацию о потоках в stdout.
Требуется отладочная сборка Python.
Устарело с версии 3.10, будет удалено в версии 3.12.
-
PYTHONDUMPREFS -
Если задана, Python выведет объекты и счётчики ссылок, оставшиеся после завершения работы интерпретатора.
Требуется, чтобы Python был собран с параметром сборки
--with-trace-refs.
-
PYTHONDUMPREFSFILE=FILENAME -
Если задана, Python выведет объекты и счётчики ссылок, оставшиеся после завершения работы интерпретатора, в файл с именем FILENAME.
Требуется, чтобы Python был собран с параметром сборки
--with-trace-refs.Добавлено в версии 3.11.
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/using/cmdline.html