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).
При вызове с аргументом filename или с файлом в качестве стандартного ввода он считывает и выполняет скрипт из этого файла.
При вызове с аргументом имени каталога он считывает и выполняет сценарий с соответствующим именем из этого каталога.
При вызове с помощью
-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
(что позволит импортировать модули из этого каталога как модули верхнего уровня).Создает 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
не содержит ни текущего каталога, ни каталога пакетов сайта пользователя. Все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
не содержит ни каталога скрипта, ни каталога пользовательских пакетов сайта. ВсеPYTHON*
переменные среды также игнорируются.Создает auditing event
cpython.run_file
с аргументомfilename
.См.также
runpy.run_path()
Эквивалентная функциональность, доступная непосредственно коду на Python
Если параметр интерфейса не указан, то подразумевается -i
, sys.argv[0]
является пустой строкой (""
), и текущий каталог будет добавлен в начало sys.path
. Кроме того, автоматически включаются функции заполнения вкладок и редактирования истории, если они доступны на вашей платформе (см. Конфигурация строки чтения).
См.также
Изменено в версии 3.4: Автоматическое включение заполнения вкладок и редактирования истории.
1.1.2. Общие параметры¶
- -?¶
- -h¶
- --help¶
Выведите краткое описание всех параметров командной строки и соответствующих переменных окружения и завершите работу.
- --help-env¶
Выведите краткое описание переменных среды, специфичных для Python, и завершите работу.
Добавлено в версии 3.11.
- --help-xoptions¶
Распечатайте описание параметров, зависящих от конкретной реализации
-X
, и завершите работу.Добавлено в версии 3.11.
- --help-all¶
Распечатайте полную информацию об использовании и завершите работу.
Добавлено в версии 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
.
- -E¶
Игнорируйте все
PYTHON*
переменные окружения, напримерPYTHONPATH
иPYTHONHOME
, которые могут быть установлены.
- -i¶
Когда в качестве первого аргумента передается сценарий или используется параметр
-c
, после выполнения сценария или команды перейдите в интерактивный режим, даже еслиsys.stdin
не отображается как терминал. ФайлPYTHONSTARTUP
не прочитан.Это может быть полезно для проверки глобальных переменных или трассировки стека, когда скрипт вызывает исключение. Смотрите также
PYTHONINSPECT
.
- -I¶
Запустите Python в изолированном режиме. Это также подразумевает опции
-E
,-P
и-s
.В изолированном режиме
sys.path
не содержит ни каталога скрипта, ни каталога пакетов сайта пользователя. Все переменные средыPYTHON*
также игнорируются. Могут быть введены дополнительные ограничения, чтобы пользователь не мог внедрить вредоносный код.Добавлено в версии 3.4.
- -O¶
Удалите операторы assert и любой код, зависящий от значения
__debug__
. Увеличьте имя файла для скомпилированных (bytecode) файлов, добавив.opt-1
перед расширением.pyc
(см. PEP 488). Смотрите такжеPYTHONOPTIMIZE
.Изменено в версии 3.5: Измените
.pyc
имена файлов в соответствии с PEP 488.
- -OO¶
Выполните
-O
, а также удалите строки документации. Увеличьте имя файла для скомпилированных (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
(изолированные).Добавлено в версии 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 -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
игнорирует все предупреждения об устаревании.Поле действие соответствует описанному выше, но применяется только к предупреждениям, которые соответствуют остальным полям.
Поле message должно соответствовать всему предупреждающему сообщению; это соответствие не зависит от регистра.
Поле категория соответствует категории предупреждения (например,:
DeprecationWarning
). Это должно быть имя класса; соответствие проверяет, является ли фактическая категория предупреждения в сообщении подклассом указанной категории предупреждения.Поле module соответствует (полному) названию модуля; это соответствие чувствительно к регистру.
Поле lineno соответствует номеру строки, где ноль соответствует номерам всех строк и, таким образом, эквивалентен пропущенному номеру строки.
Может быть задано несколько вариантов
-W
; если предупреждение соответствует более чем одному варианту, выполняется действие для последнего соответствующего варианта. Недопустимые параметры-W
игнорируются (хотя при первом предупреждении выводится предупреждающее сообщение о недопустимых параметрах).Предупреждениями также можно управлять с помощью переменной окружения
PYTHONWARNINGS
и из программы на Python с помощью модуляwarnings
. Например, функцияwarnings.filterwarnings()
может использоваться для использования регулярного выражения в предупреждающем сообщении.Смотрите Фильтр предупреждений и Описание фильтров предупреждений для получения более подробной информации.
- -x¶
Пропустите первую строку исходного кода, разрешив использовать не Unix-формы
#!cmd
. Это предназначено только для взлома, специфичного для DOS.
- -X¶
Зарезервировано для различных вариантов, зависящих от конкретной реализации. В настоящее время CPython определяет следующие возможные значения:
-X faulthandler
, чтобы включитьfaulthandler
. Смотрите такжеPYTHONFAULTHANDLER
.-X showrefcount
для вывода общего количества ссылок и количества используемых блоков памяти при завершении программы или после каждой инструкции в интерактивном интерпретаторе. Это работает только на debug builds.-X tracemalloc
чтобы начать отслеживание распределения памяти в Python, используйте модульtracemalloc
. По умолчанию в режиме обратной трассировки сохраняется только самый последний кадр. Используйте-X tracemalloc=NFRAME
, чтобы начать трассировку с ограничением обратной трассировки в N КАДРОВ frames. Смотритеtracemalloc.start()
иPYTHONTRACEMALLOC
для получения дополнительной информации.-X int_max_str_digits
настраивает integer string conversion length limitation. Смотрите такжеPYTHONINTMAXSTRDIGITS
.-X importtime
, чтобы показать, сколько времени занимает каждый импорт. В нем отображается название модуля, суммарное время (включая вложенный импорт) и время автономной работы (исключая вложенный импорт). Обратите внимание, что в многопоточном приложении его вывод может быть нарушен. Обычно используетсяpython3 -X importtime -c 'import asyncio'
. Смотрите такжеPYTHONPROFILEIMPORTTIME
.-X dev
: включить Python Development Mode, вводя дополнительные проверки во время выполнения, которые слишком дороги, чтобы включать их по умолчанию. Смотрите такжеPYTHONDEVMODE
.-X utf8
включает функцию Python UTF-8 Mode.-X utf8=0
явно отключает функцию Python UTF-8 Mode (даже если в противном случае она активировалась бы автоматически). Смотрите такжеPYTHONUTF8
.-X pycache_prefix=PATH
позволяет записывать.pyc
файлы в параллельное дерево с корнем в данном каталоге, а не в дерево кода. Смотрите такжеPYTHONPYCACHEPREFIX
.-X warn_default_encoding
выдаетEncodingWarning
, когда для открытия файлов используется кодировка по умолчанию, зависящая от языкового стандарта. Смотрите такжеPYTHONWARNDEFAULTENCODING
.-X no_debug_ranges
отключает включение таблиц, отображающих дополнительную информацию о местоположении (конечная строка, смещение начального столбца и смещение конечного столбца) для каждой команды в code objects. Это полезно, когда требуются объекты кода меньшего размера и pyc-файлы, а также для подавления дополнительных визуальных индикаторов местоположения, когда интерпретатор отображает трассировку. Смотрите такжеPYTHONNODEBUGRANGES
.-X frozen_modules
определяет, игнорируются ли замороженные модули механизмом импорта. Значение «on» означает, что они импортируются, а «off» означает, что они игнорируются. Значение по умолчанию «on», если это установленный Python (обычный случай). Если он находится в стадии разработки (запускается из дерева исходных текстов), то значение по умолчанию равно «выкл.». Обратите внимание, что замороженные модули «importlib_bootstrap» и «importlib_bootstrap_external» используются всегда, даже если для этого флага установлено значение «выкл.».
Это также позволяет передавать произвольные значения и извлекать их через словарь
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. Параметры, которые вы не должны использовать¶
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__
в этом файле.Создает auditing event
cpython.run_startup
с аргументомfilename
.
- PYTHONOPTIMIZE¶
Если задано значение непустой строки, это эквивалентно указанию параметра
-O
. Если задано значение целого числа, это эквивалентно многократному указанию-O
.
- PYTHONBREAKPOINT¶
Если это значение задано, вызываемый объект именуется с использованием обозначения с точечным контуром. Модуль, содержащий вызываемый объект, будет импортирован, а затем вызываемый объект будет запущен с помощью реализации по умолчанию
sys.breakpointhook()
, которая сама вызывается встроеннымbreakpoint()
. Если значение не задано или равно пустой строке, оно эквивалентно значению «pdb.set_trace». Установка этого значения в строку «0» приводит к тому, что реализацияsys.breakpointhook()
по умолчанию не выполняет ничего, кроме немедленного возврата.Добавлено в версии 3.7.
- PYTHONDEBUG¶
Если задано значение непустой строки, это эквивалентно указанию параметра
-d
. Если задано значение целого числа, это эквивалентно многократному указанию-d
.
- PYTHONINSPECT¶
Если для этого параметра задано значение непустой строки, это эквивалентно указанию параметра
-i
.Эта переменная также может быть изменена с помощью кода на Python, используя
os.environ
, чтобы принудительно включить режим проверки при завершении программы.Выдает auditing event
cpython.run_stdin
без каких-либо аргументов.Изменено в версии 3.11.10: (также 3.10.15, 3.9.20 и 3.8.20) Генерирует события аудита.
- PYTHONUNBUFFERED¶
Если для этого параметра задано значение непустой строки, это эквивалентно указанию параметра
-u
.
- PYTHONVERBOSE¶
Если задано значение непустой строки, это эквивалентно указанию параметра
-v
. Если задано значение целого числа, это эквивалентно многократному указанию-v
.
- PYTHONCASEOK¶
Если это значение задано, Python игнорирует регистр в операторах
import
. Это работает только в Windows и Mac OS.
- PYTHONDONTWRITEBYTECODE¶
Если для этого параметра задано значение непустой строки, Python не будет пытаться записывать файлы
.pyc
при импорте исходных модулей. Это эквивалентно указанию параметра-B
.
- PYTHONPYCACHEPREFIX¶
Если это значение задано, Python будет записывать файлы
.pyc
в зеркальное дерево каталогов по этому пути, а не в каталоги__pycache__
в исходном дереве. Это эквивалентно указанию параметра-X
pycache_prefix=PATH
.Добавлено в версии 3.8.
- PYTHONHASHSEED¶
Если эта переменная не задана или имеет значение
random
, для заполнения хэшей объектов str и bytes используется случайное значение.Если для
PYTHONHASHSEED
задано целочисленное значение, оно используется в качестве фиксированного начального значения для генерации хэша() типов, охватываемых рандомизацией хэша.Его цель - обеспечить повторяемое хэширование, например, для самотестирования самого интерпретатора, или разрешить кластеру процессов python совместно использовать значения хэша.
Целое число должно быть десятичным числом в диапазоне [0,4294967295]. Указание значения 0 отключит рандомизацию хэша.
Добавлено в версии 3.2.3.
- PYTHONINTMAXSTRDIGITS¶
Если для этой переменной задано целое число, она используется для настройки глобального integer string conversion length limitation интерпретатора.
Добавлено в версии 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¶
Если задана эта переменная среды, то вместо значения, полученного во время выполнения C, будет присвоено значение
sys.argv[0]
. Работает только в Mac OS.
- 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
.Добавлено в версии 3.3.
- PYTHONTRACEMALLOC¶
Если для этой переменной среды задано значение непустой строки, запустите отслеживание распределения памяти в Python с помощью модуля
tracemalloc
. Значение переменной - это максимальное количество кадров, сохраненных в процессе обратной трассировки. Например,PYTHONTRACEMALLOC=1
сохраняет только самый последний кадр. Дополнительную информацию смотрите в функцииtracemalloc.start()
. Это эквивалентно установке параметра-X
tracemalloc
.Добавлено в версии 3.4.
- PYTHONPROFILEIMPORTTIME¶
Если для этой переменной среды задана непустая строка, Python покажет, сколько времени занимает каждый импорт. Это эквивалентно установке параметра
-X
importtime
.Добавлено в версии 3.7.
- PYTHONASYNCIODEBUG¶
Если для этой переменной среды задано значение непустой строки, включите параметр debug mode модуля
asyncio
.Добавлено в версии 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
домен.
Установить debug hooks:
debug
: установите отладочные перехватчики поверх default memory allocators.malloc_debug
: то же, что иmalloc
, но также установите отладочные перехватчики.pymalloc_debug
: то же, что иpymalloc
, но также установите отладочные перехватчики.
Добавлено в версии 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, - «mbc» и «replace» соответственно. В противном случае используются новые значения по умолчанию «utf-8» и «surrogatepass».
Это также может быть включено во время выполнения с помощью
sys._enablelegacywindowsfsencoding()
.Availability: Окна.
Добавлено в версии 3.6: Смотрите PEP 529 для получения более подробной информации.
- PYTHONLEGACYWINDOWSSTDIO¶
Если задана непустая строка, то не используются новые консольные средства чтения и записи. Это означает, что символы Unicode будут закодированы в соответствии с активной кодовой страницей консоли, а не с использованием utf-8.
Эта переменная игнорируется, если стандартные потоки перенаправляются (в файлы или каналы), а не ссылаются на буферы консоли.
Availability: Окна.
Добавлено в версии 3.6.
- PYTHONCOERCECLOCALE¶
Если установлено значение
0
, это приводит к тому, что основное приложение командной строки Python пропускает принудительное использование устаревших языковых стандартов C и POSIX на основе ASCII и заменяет их более подходящей альтернативой на основе UTF-8.Если эта переменная не задана (или ей присвоено значение, отличное от
0
), переменная среды переопределения языкового стандартаLC_ALL
также не задана, и текущим языковым стандартом, указанным для категорииLC_CTYPE
, является либо языковой стандарт по умолчаниюC
или же явно основанный на ASCII языковой стандартPOSIX
, тогда командная строка Python попытается настроить следующие языковые стандарты для категории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.
Добавлено в версии 3.7: Смотрите PEP 538 для получения более подробной информации.
- PYTHONDEVMODE¶
Если для этой переменной среды задано значение непустой строки, включите Python Development Mode, что приведет к дополнительным проверкам во время выполнения, которые слишком дороги, чтобы включать их по умолчанию. Это эквивалентно установке параметра
-X
dev
.Добавлено в версии 3.7.
- PYTHONUTF8¶
Если установлено значение
1
, включите параметр Python UTF-8 Mode.Если установлено значение
0
, отключите параметр Python UTF-8 Mode.Установка любой другой непустой строки приводит к ошибке при инициализации интерпретатора.
Добавлено в версии 3.7.
- PYTHONWARNDEFAULTENCODING¶
Если для этой переменной среды задано значение непустой строки, то при использовании кодировки по умолчанию, зависящей от языкового стандарта, выдается значение
EncodingWarning
.Более подробную информацию смотрите в разделе Предупреждение о включенном кодировании.
Добавлено в версии 3.10.
- PYTHONNODEBUGRANGES¶
Если эта переменная установлена, она отключает включение таблиц, отображающих дополнительную информацию о местоположении (конечная строка, смещение начального столбца и смещение конечного столбца), в каждую инструкцию в code objects. Это полезно, когда требуются объекты кода меньшего размера и pyc-файлы, а также для подавления дополнительных визуальных индикаторов местоположения, когда интерпретатор отображает обратные трассировки.
Добавлено в версии 3.11.
1.2.1. Переменные режима отладки¶
- PYTHONTHREADDEBUG¶
Если этот параметр установлен, Python выведет информацию об отладке потоков в стандартный вывод.
Нужен debug build of Python.
Утратил актуальность с версии 3.10, будет удален в версии 3.12.
- PYTHONDUMPREFS¶
Если этот параметр установлен, Python будет сбрасывать объекты и количество ссылок, которые все еще остаются в силе после завершения работы интерпретатора.
Нужен Python, настроенный с параметром
--with-trace-refs
build.
- PYTHONDUMPREFSFILE=FILENAME¶
Если этот параметр установлен, Python будет сбрасывать объекты и количество ссылок, которые все еще остаются активными после завершения работы интерпретатора, в файл с именем FILENAME.
Нужен Python, настроенный с параметром
--with-trace-refs
build.Добавлено в версии 3.11.