1. Командная строка и окружение¶
Интерпретатор CPython проверяет командную строку и окружение на наличие различных настроек.
Детали реализации CPython: В других реализациях схемы командной строки могут отличаться. Дополнительные ресурсы см. в разделе Альтернативные варианты реализации.
1.1. Командная строка¶
При вызове Python вы можете указать любой из этих параметров:
python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]
Самый распространенный вариант использования - это, конечно, простой вызов скрипта:
python myscript.py
1.1.1. Параметры интерфейса¶
Интерфейс интерпретатора похож на интерфейс оболочки UNIX, но предоставляет некоторые дополнительные методы вызова:
При вызове со стандартным вводом, подключенным к устройству tty, он запрашивает команды и выполняет их до тех пор, пока не будет прочитан символ EOF (символ конца файла, который можно получить с помощью Ctrl-D в UNIX или Ctrl-Z, Enter в Windows). Подробнее об интерактивном режиме см. в разделе Интерактивный режим.
При вызове с аргументом в виде имени файла или с файлом в качестве стандартного ввода он считывает и выполняет сценарий из этого файла.
При вызове с аргументом в виде имени каталога он считывает и выполняет соответствующий скрипт из этого каталога.
При вызове с
-c command
он выполняет оператор(ы) Python, заданный(ые) как команда. Здесь команда может содержать несколько операторов, разделенных новыми строками. Пробельные символы в операторах Python имеют большое значение!При вызове с
-m module-name
данный модуль находится на пути к модулям Python и выполняется как скрипт.
В неинтерактивном режиме весь входной сигнал разбирается перед выполнением.
Опция интерфейса завершает список опций, потребляемых интерпретатором, все последовательные аргументы будут заканчиваться на sys.argv
. – обратите внимание, что первый элемент с нулевым субскриптом (sys.argv[0]
) представляет собой строку, отражающую исходный текст программы.
- -c <command>¶
Выполнить код Python в команде. команда может быть одним или несколькими операторами, разделенными новыми строками, со значительными пробелами, как в обычном коде модуля.
Если эта опция задана, то первым элементом
sys.argv
будет"-c"
, а текущий каталог будет добавлен в началоsys.path
(что позволит импортировать модули в этом каталоге как модули верхнего уровня).Поднимает auditing event
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
Поднимает auditing event
cpython.run_module
с аргументомmodule-name
.См.также
runpy.run_module()
Эквивалентная функциональность напрямую доступна для кода Python
PEP 338 – Выполнение модулей как скриптов
Изменено в версии 3.1: Укажите имя пакета для запуска подмодуля
__main__
.Изменено в версии 3.4: Пакеты пространства имен также поддерживаются
- -
Чтение команд со стандартного ввода (
sys.stdin
). Если стандартный ввод - это терминал, то подразумевается-i
.Если эта опция задана, то первым элементом
sys.argv
будет"-"
, а текущий каталог будет добавлен к началуsys.path
.Поднимает auditing event
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*
также игнорируются.Поднимает auditing event
cpython.run_file
с аргументомfilename
.См.также
runpy.run_path()
Эквивалентная функциональность напрямую доступна для кода Python
Если опция интерфейса не указана, то подразумевается -i
, sys.argv[0]
- пустая строка (""
), а текущий каталог будет добавлен в начало sys.path
. Кроме того, автоматически включается завершение вкладок и редактирование истории, если это доступно на вашей платформе (см. Конфигурация Readline).
См.также
Изменено в версии 3.4: Автоматическое включение функции завершения вкладок и редактирования истории.
1.1.2. Общие параметры¶
- -?¶
- -h¶
- --help¶
Выведите краткое описание всех опций командной строки и соответствующих переменных окружения и выйдите из программы.
- --help-env¶
Выведите краткое описание переменных окружения, специфичных для Python, и выйдите из программы.
Added in version 3.11.
- --help-xoptions¶
Выведите описание специфических для реализации
-X
опций и выйдите.Added in version 3.11.
- --help-all¶
Распечатайте полную информацию об использовании и выйдите.
Added in version 3.11.
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
.Для этого параметра требуется значение debug build of Python, иначе он игнорируется.
- -E¶
Игнорируйте все переменные окружения
PYTHON*
, напримерPYTHONPATH
иPYTHONHOME
, которые могут быть установлены.
- -i¶
Вход в интерактивный режим после выполнения.
Использование опции
-i
приведет к переходу в интерактивный режим в любом из следующих обстоятельств:Когда скрипт передается в качестве первого аргумента
При использовании опции
-c
При использовании опции
-m
Интерактивный режим запускается, даже если
sys.stdin
не является терминалом. ФайлPYTHONSTARTUP
не читается.Это может быть полезно для просмотра глобальных переменных или трассировки стека, когда сценарий вызывает исключение. См. также
PYTHONINSPECT
.
- -I¶
Запуск Python в изолированном режиме. Это также подразумевает опции
-E
,-P
и-s
.В изолированном режиме
sys.path
не содержит ни каталога скрипта, ни каталога site-packages пользователя. Все переменные окруженияPYTHON*
также игнорируются. Могут быть наложены дополнительные ограничения, чтобы предотвратить внедрение пользователем вредоносного кода.Added in version 3.4.
- -O¶
Удалите утверждения assert и любой код, зависящий от значения
__debug__
. Дополните имя файла для скомпилированных (bytecode) файлов, добавив.opt-1
перед расширением.pyc
(см. PEP 488). См. такжеPYTHONOPTIMIZE
.Изменено в версии 3.5: Измените имена файлов
.pyc
в соответствии с PEP 488.
- -OO¶
Делайте
-O
, а также отбрасывайте docstrings. Дополните имя файла для скомпилированных (bytecode) файлов, добавив.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
(изолированные).Added in version 3.11.
- -q¶
Не отображайте сообщения об авторских правах и версии даже в интерактивном режиме.
Added in version 3.2.
- -R¶
Включить рандомизацию хэшей. Эта опция действует, только если переменная окружения
PYTHONHASHSEED
установлена в значение0
, поскольку рандомизация хэшей включена по умолчанию.В предыдущих версиях Python эта опция включает рандомизацию хэша, так что значения
__hash__()
объектов str и bytes «солятся» непредсказуемым случайным значением. Хотя они остаются постоянными в рамках отдельного процесса Python, они не предсказуемы между повторными вызовами Python.Рандомизация хэша призвана обеспечить защиту от отказа в обслуживании, вызванного тщательно подобранными входными данными, которые используют наихудшую производительность конструкции дикта, O(n2) сложность. Подробности см. на сайте http://ocert.org/advisories/ocert-2011-003.html.
PYTHONHASHSEED
позволяет задать фиксированное значение для секрета хэш-семени.Added in version 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 -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.Поле Действие соответствует приведенному выше описанию, но применяется только к предупреждениям, соответствующим остальным полям.
Поле message должно соответствовать всему предупреждению; это соответствие не зависит от регистра.
Поле категория соответствует категории предупреждения (например,
DeprecationWarning
). Это должно быть имя класса; при проверке соответствия проверяется, является ли фактическая категория предупреждения сообщения подклассом указанной категории предупреждения.Поле module соответствует (полностью квалифицированному) имени модуля; это соответствие чувствительно к регистру.
Поле lineno соответствует номеру строки, где ноль соответствует всем номерам строк и, таким образом, эквивалентен опущенному номеру строки.
Можно задать несколько вариантов
-W
; если предупреждение соответствует более чем одному варианту, выполняется действие, соответствующее последнему варианту. Неверные параметры-W
игнорируются (хотя при выдаче первого предупреждения выводится сообщение о неверных параметрах).Предупреждениями также можно управлять с помощью переменной окружения
PYTHONWARNINGS
и из программы на Python с помощью модуляwarnings
. Например, с помощью функцииwarnings.filterwarnings()
можно использовать регулярное выражение для сообщения о предупреждении.Более подробную информацию см. в разделах Фильтр предупреждений и Описание предупреждающих фильтров.
- -x¶
Пропускает первую строку исходного текста, позволяя использовать не-Unix-формы
#!cmd
. Это предназначено только для хака под DOS.
- -X¶
Зарезервировано для различных опций, специфичных для конкретной реализации. В настоящее время CPython определяет следующие возможные значения:
-X faulthandler
, чтобы включитьfaulthandler
. См. такжеPYTHONFAULTHANDLER
.Added in version 3.3.
-X showrefcount
для вывода общего количества ссылок и количества использованных блоков памяти при завершении программы или после каждого оператора в интерактивном интерпретаторе. Это работает только в режиме debug builds.Added in version 3.4.
-X tracemalloc
, чтобы начать трассировку выделения памяти Python с помощью модуляtracemalloc
. По умолчанию в обратном ходе трассировки сохраняется только последний кадр. Используйте-X tracemalloc=NFRAME
, чтобы начать трассировку с ограничением на количество кадров NFRAME. Дополнительные сведения см. в разделахtracemalloc.start()
иPYTHONTRACEMALLOC
.Added in version 3.4.
-X int_max_str_digits
настраивает integer string conversion length limitation. См. такжеPYTHONINTMAXSTRDIGITS
.Added in version 3.11.
-X importtime
, чтобы показать, сколько времени занимает каждый импорт. Он показывает имя модуля, суммарное время (включая вложенный импорт) и собственное время (исключая вложенный импорт). Обратите внимание, что его вывод может быть нарушен в многопоточном приложении. Обычно используетсяpython3 -X importtime -c 'import asyncio'
. См. такжеPYTHONPROFILEIMPORTTIME
.Added in version 3.7.
-X dev
: включить Python Development Mode, вводя дополнительные проверки во время выполнения, которые слишком дороги, чтобы быть включенными по умолчанию. См. такжеPYTHONDEVMODE
.Added in version 3.7.
-X utf8
включает Python UTF-8 Mode.-X utf8=0
явно отключает Python UTF-8 Mode (даже если в противном случае он активируется автоматически). См. такжеPYTHONUTF8
.Added in version 3.7.
-X pycache_prefix=PATH
позволяет записывать файлы.pyc
не в дерево кода, а в параллельное дерево, укорененное в указанном каталоге. См. такжеPYTHONPYCACHEPREFIX
.Added in version 3.8.
-X warn_default_encoding
выдаетEncodingWarning
, когда для открытия файлов используется кодировка по умолчанию, характерная для конкретной локали. См. такжеPYTHONWARNDEFAULTENCODING
.Added in version 3.10.
-X no_debug_ranges
отключает включение таблиц, отображающих дополнительную информацию о местоположении (конец строки, смещение начального столбца и смещение конечного столбца) для каждой инструкции в объектах кода. Это полезно, когда требуется уменьшить размер объектов кода и pyc-файлов, а также для подавления дополнительных визуальных индикаторов местоположения, когда интерпретатор отображает трассировки. См. такжеPYTHONNODEBUGRANGES
.Added in version 3.11.
-X frozen_modules
определяет, игнорируются ли замороженные модули механизмом импорта. Значениеon
означает, что они импортируются, аoff
- что они игнорируются. По умолчанию стоитon
, если это установленный Python (обычный случай). Если он находится в разработке (запускается из дерева исходных текстов), то по умолчанию будетoff
. Обратите внимание, что замороженные модулиimportlib_bootstrap
иimportlib_bootstrap_external
используются всегда, даже если этот флаг установлен вoff
. См. такжеPYTHON_FROZEN_MODULES
.Added in version 3.11.
-X perf
включает поддержку профилировщикаperf
для Linux. При указании этой опции профилировщикperf
сможет сообщать о вызовах Python. Эта опция доступна только на некоторых платформах и ничего не сделает, если не поддерживается в текущей системе. Значение по умолчанию - «off». См. такжеPYTHONPERFSUPPORT
и Поддержка Python для профилировщика Linux perf.Added in version 3.12.
-X perf_jit
включает поддержку профилировщика Linuxperf
с поддержкой DWARF. Когда эта опция установлена, профилировщикperf
сможет сообщать о вызовах Python, используя информацию DWARF. Эта опция доступна только на некоторых платформах и ничего не сделает, если не поддерживается в текущей системе. Значение по умолчанию - «off». См. такжеPYTHON_PERF_JIT_SUPPORT
и Поддержка Python для профилировщика Linux perf.Added in version 3.13.
-X cpu_count=n
переопределяетos.cpu_count()
,os.process_cpu_count()
иmultiprocessing.cpu_count()
. Параметр n должен быть больше или равен 1. Этот параметр может быть полезен для пользователей, которым необходимо ограничить ресурсы процессора контейнерной системы. См. такжеPYTHON_CPU_COUNT
. Если n равноdefault
, то ничего не переопределяется.Added in version 3.13.
-X presite=package.module
указывает на модуль, который должен быть импортирован до выполнения модуляsite
и до появления модуля__main__
. Поэтому импортируемый модуль не является__main__
. Это можно использовать для раннего выполнения кода во время инициализации Python. Чтобы эта опция существовала, Python должен быть built in debug mode. См. такжеPYTHON_PRESITE
.Added in version 3.13.
-X gil=0,1
заставляет GIL быть отключенным или включенным, соответственно. Доступно только в сборках, сконфигурированных с--disable-gil
. См. такжеPYTHON_GIL
и Свободнопоточный CPython.Added in version 3.13.
Он также позволяет передавать произвольные значения и получать их через словарь
sys._xoptions
.Added in version 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. Опции, которые не стоит использовать¶
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
.Added in version 3.11.
- PYTHONPLATLIBDIR¶
Если это значение имеет непустую строку, оно отменяет значение
sys.platlibdir
.Added in version 3.9.
- PYTHONSTARTUP¶
Если это имя читаемого файла, то команды Python в этом файле выполняются до появления первого приглашения в интерактивном режиме. Файл выполняется в том же пространстве имен, где выполняются интерактивные команды, так что объекты, определенные или импортированные в нем, могут использоваться в интерактивном сеансе без каких-либо ограничений. В этом файле можно также изменить подсказки
sys.ps1
иsys.ps2
и крючокsys.__interactivehook__
.Поднимает auditing event
cpython.run_startup
с аргументомfilename
.
- PYTHONOPTIMIZE¶
Если это значение задано непустой строкой, это эквивалентно указанию опции
-O
. Если задано целое число, это эквивалентно указанию-O
несколько раз.
- PYTHONBREAKPOINT¶
Если этот параметр установлен, он называет вызываемый модуль, используя нотацию пунктирного пути. Модуль, содержащий вызываемый модуль, будет импортирован, а затем вызываемый модуль будет запущен стандартной реализацией
sys.breakpointhook()
, которая сама вызывается встроеннойbreakpoint()
. Если значение не установлено или установлено в пустую строку, то оно эквивалентно значению «pdb.set_trace». Установка этого значения в строку «0» заставляет реализацию по умолчаниюsys.breakpointhook()
ничего не делать, а сразу возвращаться.Added in version 3.7.
- PYTHONDEBUG¶
Если это значение задано непустой строкой, это эквивалентно указанию опции
-d
. Если задано целое число, это эквивалентно указанию-d
несколько раз.Для этой переменной окружения требуется значение debug build of Python, иначе она игнорируется.
- PYTHONINSPECT¶
Если это значение равно непустой строке, это эквивалентно указанию опции
-i
.Эта переменная также может быть модифицирована кодом Python с помощью
os.environ
для принудительного перехода в режим осмотра при завершении программы.
- PYTHONVERBOSE¶
Если это значение задано непустой строкой, это эквивалентно указанию опции
-v
. Если задано целое число, это эквивалентно указанию-v
несколько раз.
- PYTHONCASEOK¶
Если это значение установлено, Python игнорирует регистр в операторах
import
. Это работает только в Windows и macOS.
- PYTHONDONTWRITEBYTECODE¶
Если задать непустую строку, Python не будет пытаться записывать файлы
.pyc
при импорте исходных модулей. Это эквивалентно указанию опции-B
.
- PYTHONPYCACHEPREFIX¶
Если это значение установлено, Python будет записывать
.pyc
файлы в зеркальное дерево каталогов по этому пути, а не в__pycache__
каталоги в дереве исходников. Это эквивалентно указанию опции-X
pycache_prefix=PATH
.Added in version 3.8.
- PYTHONHASHSEED¶
Если эта переменная не установлена или установлена в
random
, то для засева хэшей объектов str и bytes используется случайное значение.Если
PYTHONHASHSEED
имеет целочисленное значение, оно используется в качестве фиксированного семени для генерации хэша() типов, охваченных рандомизацией хэша.Его цель - обеспечить повторяемость хэширования, например, для самотестирования самого интерпретатора или для того, чтобы кластер процессов python мог совместно использовать хэш-значения.
Целое число должно быть десятичным числом в диапазоне [0,4294967295]. Указание значения 0 отключает рандомизацию хэша.
Added in version 3.2.3.
- PYTHONINTMAXSTRDIGITS¶
Если эта переменная имеет целое значение, то она используется для настройки глобального integer string conversion length limitation интерпретатора.
Added in version 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
и installation paths для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=module # Warn once per calling module PYTHONWARNINGS=once # Warn once per Python process PYTHONWARNINGS=ignore # Never warn
Более подробную информацию см. в разделах Фильтр предупреждений и Описание предупреждающих фильтров.
- PYTHONFAULTHANDLER¶
Если эта переменная окружения имеет значение непустой строки, при запуске вызывается
faulthandler.enable()
: установите обработчик сигналовSIGSEGV
,SIGFPE
,SIGABRT
,SIGBUS
иSIGILL
для дампа трассировки Python. Это эквивалентно-X
faulthandler
опции.Added in version 3.3.
- PYTHONTRACEMALLOC¶
Если эта переменная окружения имеет значение непустой строки, то начинается трассировка выделений памяти Python с помощью модуля
tracemalloc
. Значение переменной - это максимальное количество кадров, сохраняемых в обратном ходе трассировки. Например,PYTHONTRACEMALLOC=1
сохраняет только самый последний кадр. Дополнительные сведения см. в функцииtracemalloc.start()
. Это эквивалентно установке параметра-X
tracemalloc
.Added in version 3.4.
- PYTHONPROFILEIMPORTTIME¶
Если эта переменная окружения имеет непустую строку, Python будет показывать, сколько времени занимает каждый импорт. Это эквивалентно установке параметра
-X
importtime
.Added in version 3.7.
- PYTHONASYNCIODEBUG¶
Если эта переменная окружения имеет значение непустой строки, включите debug mode модуля
asyncio
.Added in version 3.4.
- PYTHONMALLOC¶
Установите распределители памяти Python и/или установите отладочные крючки.
Установите семейство аллокаторов памяти, используемых Python:
default
: используйте default memory allocators.malloc
: используйте функциюmalloc()
из библиотеки C для всех доменов (PYMEM_DOMAIN_RAW
,PYMEM_DOMAIN_MEM
,PYMEM_DOMAIN_OBJ
).pymalloc
: используйте функцию pymalloc allocator для доменовPYMEM_DOMAIN_MEM
иPYMEM_DOMAIN_OBJ
и функциюmalloc()
для доменаPYMEM_DOMAIN_RAW
.mimalloc
: используйте функцию mimalloc allocator для доменовPYMEM_DOMAIN_MEM
иPYMEM_DOMAIN_OBJ
и функциюmalloc()
для доменаPYMEM_DOMAIN_RAW
.
Установите debug hooks:
debug
: установите отладочные крючки поверх default memory allocators.malloc_debug
: то же самое, что иmalloc
, но с установкой отладочных крючков.pymalloc_debug
: то же самое, что иpymalloc
, но с установкой отладочных крючков.mimalloc_debug
: то же самое, что иmimalloc
, но с установкой отладочных крючков.
Added in version 3.6.
Изменено в версии 3.7: Добавлен аллокатор
"default"
.
- PYTHONMALLOCSTATS¶
Если задать непустую строку, Python будет выводить статистику pymalloc memory allocator при каждом создании нового объекта pymalloc arena, а также при завершении работы.
Эта переменная игнорируется, если переменная окружения
PYTHONMALLOC
используется для принудительного использованияmalloc()
аллокатора библиотеки C, или если Python настроен без поддержкиpymalloc
.Изменено в версии 3.6: Эта переменная теперь может использоваться и в Python, скомпилированном в режиме релиза. Теперь она не имеет эффекта, если установлена в пустую строку.
- PYTHONLEGACYWINDOWSFSENCODING¶
Если задана непустая строка, режим filesystem encoding and error handler по умолчанию возвращается к своим значениям до версии 3.6 - „mbcs“ и „replace“, соответственно. В противном случае будут использоваться новые значения по умолчанию „utf-8“ и „surrogatepass“.
Это также может быть включено во время выполнения с помощью
sys._enablelegacywindowsfsencoding()
.Availability: Windows.
Added in version 3.6: Более подробную информацию см. в разделе PEP 529.
- PYTHONLEGACYWINDOWSSTDIO¶
Если установлено значение непустой строки, то не используется новое устройство чтения и записи консоли. Это означает, что символы Unicode будут кодироваться в соответствии с активной кодовой страницей консоли, а не с помощью utf-8.
Эта переменная игнорируется, если стандартные потоки перенаправляются (в файлы или трубы), а не ссылаются на буферы консоли.
Availability: Windows.
Added in version 3.6.
- PYTHONCOERCECLOCALE¶
Если установлено значение
0
, это заставляет основное приложение командной строки Python пропустить принудительную установку устаревших локалей C и POSIX, основанных на ASCII, на более удобную альтернативу, основанную на UTF-8.Если эта переменная не установлена (или установлена в значение, отличное от
0
), переменная окруженияLC_ALL
locale override также не установлена, а текущая локаль, указанная для категорииLC_CTYPE
, является либо локалью по умолчаниюC
, либо явно основанной на ASCII локальюPOSIX
, то Python CLI попытается настроить следующие локали для категорииLC_CTYPE
в перечисленном порядке до загрузки среды выполнения интерпретатора:C.UTF-8
C.utf8
UTF-8
Если установка одной из этих категорий локалей прошла успешно, то переменная окружения
LC_CTYPE
также будет установлена соответствующим образом в окружении текущего процесса перед инициализацией среды выполнения Python. Это гарантирует, что помимо того, что обновленные настройки будут видны как самому интерпретатору, так и другим компонентам с поддержкой локали, запущенным в том же процессе (например, библиотеке GNUreadline
), они также будут видны в подпроцессах (независимо от того, запущен ли в них интерпретатор Python), а также в операциях, которые запрашивают окружение, а не текущую локаль C (например, в собственнойlocale.getdefaultlocale()
Python).Настройка одной из этих локалей (либо явно, либо через описанное выше неявное принуждение к локали) автоматически включает
surrogateescape
error handler дляsys.stdin
иsys.stdout
(sys.stderr
продолжает использоватьbackslashreplace
, как и в любой другой локали). Это поведение при работе с потоками можно переопределить с помощьюPYTHONIOENCODING
, как обычно.В целях отладки установка
PYTHONCOERCECLOCALE=warn
заставит Python выдавать предупреждения наstderr
, если либо активируется принуждение локали, либо если локаль, которая могла бы вызвать принуждение, все еще активна при инициализации среды выполнения Python.Также обратите внимание, что даже если принудительное определение локали отключено, или если не удается найти подходящую целевую локаль,
PYTHONUTF8
все равно будет активироваться по умолчанию в старых локалях, основанных на ASCII. Обе функции должны быть отключены, чтобы заставить интерпретатор использоватьASCII
вместоUTF-8
для системных интерфейсов.Availability: Unix.
Added in version 3.7: Более подробную информацию см. в разделе PEP 538.
- PYTHONDEVMODE¶
Если эта переменная окружения имеет значение непустой строки, включите Python Development Mode, вводя дополнительные проверки во время выполнения, которые слишком дороги, чтобы быть включенными по умолчанию. Это эквивалентно установке
-X
dev
.Added in version 3.7.
- PYTHONUTF8¶
Если установлено значение
1
, включите Python UTF-8 Mode.Если установлено значение
0
, отключите Python UTF-8 Mode.Установка любой другой непустой строки приводит к ошибке при инициализации интерпретатора.
Added in version 3.7.
- PYTHONWARNDEFAULTENCODING¶
Если эта переменная окружения установлена в непустую строку, выдайте
EncodingWarning
, если используется кодировка по умолчанию для конкретной локали.Подробности см. в разделе ОптКодированиеПредупреждение.
Added in version 3.10.
- PYTHONNODEBUGRANGES¶
Если эта переменная установлена, то она отключает включение таблиц, отображающих дополнительную информацию о местоположении (конец строки, смещение начального столбца и смещение конечного столбца) для каждой инструкции в объектах кода. Это полезно, когда требуется уменьшить размер объектов кода и pyc-файлов, а также для подавления дополнительных визуальных индикаторов местоположения, когда интерпретатор отображает трассировку.
Added in version 3.11.
- PYTHONPERFSUPPORT¶
Если эта переменная имеет ненулевое значение, она включает поддержку профилировщика Linux
perf
, чтобы вызовы Python могли быть обнаружены им.Если установлено значение
0
, отключается поддержка профилировщика Linuxperf
.См. также опцию командной строки
-X perf
и Поддержка Python для профилировщика Linux perf.Added in version 3.12.
- PYTHON_PERF_JIT_SUPPORT¶
Если эта переменная имеет ненулевое значение, она включает поддержку профилировщика Linux
perf
, чтобы вызовы Python могли быть обнаружены им с помощью информации DWARF.Если установлено значение
0
, отключается поддержка профилировщика Linuxperf
.См. также опцию командной строки
-X perf_jit
и Поддержка Python для профилировщика Linux perf.Added in version 3.13.
- PYTHON_CPU_COUNT¶
Если эта переменная имеет целое положительное значение, она отменяет возвращаемые значения
os.cpu_count()
иos.process_cpu_count()
.См. также параметр командной строки
-X cpu_count
.Added in version 3.13.
- PYTHON_FROZEN_MODULES¶
Если эта переменная имеет значение
on
илиoff
, она определяет, будут ли замороженные модули игнорироваться механизмом импорта. Значениеon
означает, что они импортируются, аoff
- что они игнорируются. По умолчанию используется значениеon
для не отладочных сборок (обычный случай) иoff
для отладочных сборок. Обратите внимание, что замороженные модулиimportlib_bootstrap
иimportlib_bootstrap_external
используются всегда, даже если этот флаг установлен в значениеoff
.См. также параметр командной строки
-X frozen_modules
.Added in version 3.13.
- PYTHON_COLORS¶
Если эта переменная установлена в
1
, интерпретатор будет окрашивать различные виды вывода. Установка значения0
отключает это поведение. См. также Управление цветом.Added in version 3.13.
- PYTHON_BASIC_REPL¶
Если эта переменная имеет значение
1
, интерпретатор не будет пытаться загрузить REPL, основанный на Python и требующийcurses
иreadline
, и вместо этого будет использовать традиционный REPL, основанный на парсере.Added in version 3.13.
- PYTHON_HISTORY¶
Эта переменная окружения может использоваться для задания расположения
.python_history
файла (по умолчанию он находится.python_history
в домашнем каталоге пользователя).Added in version 3.13.
- PYTHON_GIL¶
Если эта переменная установлена в
1
, будет принудительно включена глобальная блокировка интерпретатора (GIL). При установке значения0
GIL будет отключена.См. также опцию командной строки
-X gil
, которая имеет приоритет над этой переменной, и Свободнопоточный CPython.Требуется Python, сконфигурированный с опцией сборки
--disable-gil
.Added in version 3.13.
1.2.1. Переменные режима отладки¶
- PYTHONDUMPREFS¶
Если этот параметр установлен, Python будет сбрасывать объекты и количество ссылок, которые еще живы после закрытия интерпретатора.
Требуется Python, сконфигурированный с опцией сборки
--with-trace-refs
.
- PYTHONDUMPREFSFILE¶
Если значение установлено, Python будет сбрасывать объекты и количество ссылок, оставшихся после закрытия интерпретатора, в файл по пути, указанному в качестве значения этой переменной окружения.
Требуется Python, сконфигурированный с опцией сборки
--with-trace-refs
.Added in version 3.11.
- PYTHON_PRESITE¶
Если эта переменная имеет значение модуля, то этот модуль будет импортирован в самом начале жизненного цикла интерпретатора, до выполнения модуля
site
и до создания модуля__main__
. Поэтому импортированный модуль не будет рассматриваться как__main__
.Это можно использовать для раннего выполнения кода во время инициализации Python.
Чтобы импортировать подмодуль, используйте
package.module
в качестве значения, как в операторе импорта.См. также опцию командной строки
-X presite
, которая имеет приоритет над этой переменной.Требуется Python, сконфигурированный с опцией сборки
--with-pydebug
.Added in version 3.13.