1. Командная строка и среда¶
Интерпретатор CPython сканирует командную строку и окружение на наличие различных настроек.
CPython implementation detail: Схемы командной строки других реализаций могут отличаться. Дополнительные ресурсы см. в Альтернативные реализации.
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-пакетов пользователя. Все переменные окружения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. Общие параметры¶
1.1.3. Различные варианты¶
-
-b
¶
Выдавать предупреждение при сравнении
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 и -s. В изолированном режиме
sys.path
не содержит ни каталога скрипта, ни каталога site-packages пользователя. Все переменные окружения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.
-
-q
¶
Не отображайте сообщения об авторских правах и версии даже в интерактивном режиме.
Добавлено в версии 3.2.
-
-R
¶
Включить рандомизацию хэша. Эта опция действует, только если переменная окружения
PYTHONHASHSEED
установлена в значение0
, поскольку рандомизация хэша включена по умолчанию.В предыдущих версиях Python эта опция включает рандомизацию хэша, так что значения
__hash__()
объектов str и bytes «засаливаются» непредсказуемым случайным значением. Хотя они остаются постоянными в рамках отдельного процесса Python, они не предсказуемы между повторными вызовами Python.Рандомизация хэша предназначена для защиты от отказа в обслуживании, вызванного тщательно подобранными входными данными, которые используют наихудшую производительность конструкции dict, сложность O(n2). Подробности см. на http://www.ocert.org/advisories/ocert-2011-003.html.
PYTHONHASHSEED
позволяет установить фиксированное значение для секрета хэш-семени.Изменено в версии 3.7: Опция больше не игнорируется.
Добавлено в версии 3.2.3.
-
-s
¶
Не добавляйте
user site-packages directory
кsys.path
.См.также
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 должно соответствовать всему сообщению предупреждения; это соответствие не чувствительно к регистру.
Поле category соответствует категории предупреждения (например:
DeprecationWarning
). Это должно быть имя класса; соответствие проверяет, является ли фактическая категория предупреждения сообщения подклассом указанной категории предупреждения.Поле module соответствует (полностью квалифицированному) имени модуля; это соответствие чувствительно к регистру.
Поле lineno соответствует номеру строки, где ноль соответствует всем номерам строк и, таким образом, эквивалентен опущенному номеру строки.
Можно задать несколько опций
-W
; когда предупреждение соответствует более чем одной опции, выполняется действие для последней подходящей опции. Неверные параметры-W
игнорируются (хотя при первом предупреждении выводится предупреждение о неверных параметрах).Предупреждениями также можно управлять с помощью переменной окружения
PYTHONWARNINGS
и из программы на Python с помощью модуляwarnings
. Например, функцияwarnings.filterwarnings()
может быть использована для использования регулярного выражения в сообщении о предупреждении.Более подробную информацию смотрите в Фильтр предупреждений и Описание предупреждающих фильтров.
-
-x
¶
Пропускает первую строку исходного текста, позволяя использовать не-Unix формы
#!cmd
. Это предназначено только для DOS-специфичного хака.
-
-X
¶
Зарезервировано для различных опций, специфичных для конкретной реализации. В настоящее время CPython определяет следующие возможные значения:
-X faulthandler
, чтобы включитьfaulthandler
;-X showrefcount
для вывода общего количества ссылок и количества использованных блоков памяти при завершении программы или после каждого оператора в интерактивном интерпретаторе. Это работает только на debug builds.-X tracemalloc
, чтобы начать трассировку выделения памяти Python с помощью модуляtracemalloc
. По умолчанию, только самый последний кадр сохраняется в обратном отслеживание трассировки. Используйте-X tracemalloc=NFRAME
, чтобы начать трассировку с ограничением трассировки в NFRAME кадров. Дополнительную информацию см. вtracemalloc.start()
.-X importtime
, чтобы показать, сколько времени занимает каждый импорт. Он показывает имя модуля, суммарное время (включая вложенные импорты) и собственное время (исключая вложенные импорты). Обратите внимание, что его вывод может быть нарушен в многопоточном приложении. Обычно используетсяpython3 -X importtime -c 'import asyncio'
. Смотрите такжеPYTHONPROFILEIMPORTTIME
.-X dev
: включить Python Development Mode, вводя дополнительные проверки во время выполнения, которые слишком дороги, чтобы быть включенными по умолчанию.-X utf8
включает Python UTF-8 Mode.-X utf8=0
явно отключает Python UTF-8 Mode (даже если в противном случае он активируется автоматически).-X pycache_prefix=PATH
позволяет записывать файлы.pyc
в параллельное дерево, укорененное в заданном каталоге, вместо дерева кода. См. такжеPYTHONPYCACHEPREFIX
.-X warn_default_encoding
выдаетEncodingWarning
, если для открытия файлов используется локальная кодировка по умолчанию. См. такжеPYTHONWARNDEFAULTENCODING
.
Он также позволяет передавать произвольные значения и извлекать их через словарь
sys._xoptions
.Изменено в версии 3.2: Добавлена опция
-X
.Добавлено в версии 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
.Deprecated since version 3.9, removed in version 3.10: Опция
-X oldparser
.
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
.
-
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
для принудительного включения режима осмотра при завершении программы.
-
PYTHONVERBOSE
¶ Если задана непустая строка, это эквивалентно указанию опции
-v
. Если задано целое число, это эквивалентно указанию-v
несколько раз.
-
PYTHONCASEOK
¶ Если это значение установлено, Python игнорирует регистр в операторах
import
. Это работает только в Windows и macOS.
-
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.
-
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
и Distutils installation paths дляpython setup.py 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
.Добавлено в версии 3.3.
-
PYTHONTRACEMALLOC
¶ Если эта переменная окружения установлена в непустую строку, начнется трассировка выделения памяти Python с помощью модуля
tracemalloc
. Значение переменной - это максимальное количество кадров, хранящихся в трассировке. Например,PYTHONTRACEMALLOC=1
сохраняет только самый последний кадр. Дополнительную информацию см. вtracemalloc.start()
.Добавлено в версии 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.7: Добавлен распределитель
"default"
.Добавлено в версии 3.6.
-
PYTHONMALLOCSTATS
¶ Если установлено значение непустой строки, Python будет печатать статистику pymalloc memory allocator каждый раз при создании новой арены объекта pymalloc, а также при завершении работы.
Эта переменная игнорируется, если переменная окружения
PYTHONMALLOC
используется для принудительного использования распределителяmalloc()
библиотеки C, или если Python настроен без поддержкиpymalloc
.Изменено в версии 3.6: Теперь эту переменную можно использовать и в Python, скомпилированном в режиме release. Теперь она не имеет эффекта, если установлена в пустую строку.
-
PYTHONLEGACYWINDOWSFSENCODING
¶ Если задана непустая строка, режим по умолчанию filesystem encoding and error handler возвращается к своим значениям до версии 3.6 - „mbcs“ и „replace“, соответственно. В противном случае используются новые значения по умолчанию „utf-8“ и „surrogatepass“.
Это также можно включить во время выполнения с помощью
sys._enablelegacywindowsfsencoding()
.Availability: Windows.
Добавлено в версии 3.6: Более подробную информацию см. в разделе PEP 529.
-
PYTHONLEGACYWINDOWSSTDIO
¶ Если задана непустая строка, то не используется новое устройство чтения и записи консоли. Это означает, что символы Unicode будут кодироваться в соответствии с активной кодовой страницей консоли, а не с помощью utf-8.
Эта переменная игнорируется, если стандартные потоки перенаправляются (в файлы или трубы), а не ссылаются на буферы консоли.
Availability: Windows.
Добавлено в версии 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 (например, собственную локаль Pythonlocale.getdefaultlocale()
).Конфигурирование одной из этих локалей (либо явно, либо через описанное выше неявное принуждение локали) автоматически включает
surrogateescape
error handler дляsys.stdin
иsys.stdout
(sys.stderr
продолжает использоватьbackslashreplace
, как и в любой другой локали). Это поведение при работе с потоками можно переопределить с помощьюPYTHONIOENCODING
, как обычно.В целях отладки установка
PYTHONCOERCECLOCALE=warn
заставит Python выдавать предупреждающие сообщения наstderr
, если либо активируется принуждение локали, либо если локаль, которая могла вызвать принуждение, все еще активна при инициализации среды выполнения Python.Также обратите внимание, что даже если принуждение локали отключено, или если не удается найти подходящую целевую локаль,
PYTHONUTF8
все равно будет активироваться по умолчанию в старых локалях, основанных на ASCII. Обе функции должны быть отключены, чтобы заставить интерпретатор использоватьASCII
вместоUTF-8
для системных интерфейсов.Availability: *nix.
Добавлено в версии 3.7: Более подробную информацию см. в разделе PEP 538.
-
PYTHONDEVMODE
¶ Если эта переменная окружения имеет значение непустой строки, включите Python Development Mode, вводя дополнительные проверки во время выполнения, которые слишком дороги, чтобы быть включенными по умолчанию.
Добавлено в версии 3.7.
-
PYTHONUTF8
¶ Если установлено значение
1
, включите Python UTF-8 Mode.Если установлено значение
0
, отключите Python UTF-8 Mode.Установка любой другой непустой строки приводит к ошибке при инициализации интерпретатора.
Добавлено в версии 3.7.
-
PYTHONWARNDEFAULTENCODING
¶ Если эта переменная окружения установлена в непустую строку, выдайте
EncodingWarning
, когда используется локальная кодировка по умолчанию.Подробнее см. в разделе Кодирование по желаниюПредупреждение.
Добавлено в версии 3.10.
1.2.1. Переменные режима отладки¶
-
PYTHONTHREADDEBUG
¶ Если установлено, Python будет печатать информацию об отладке потоков в stdout.
Необходимо debug build of Python.
Deprecated since version 3.10, will be removed in version 3.12.
-
PYTHONDUMPREFS
¶ Если установлено, Python будет сбрасывать объекты и счетчики ссылок, которые еще живы после закрытия интерпретатора.
Необходимо, чтобы Python был настроен с опцией сборки
--with-trace-refs
.