sys — Параметры и функции, специфичные для системы
Этот модуль предоставляет доступ к некоторым переменным, используемым или поддерживаемым интерпретатором, а также к функциям, тесно взаимодействующим с интерпретатором. Он всегда доступен.
-
sys.abiflags -
В системах POSIX, где Python был скомпилирован со стандартным
configureскриптом, здесь содержатся флаги ABI, как определено в PEP 3149.Добавлен в версии 3.2.
Изменено в версии 3.8: Значение по умолчанию стало пустой строкой (флаг
mдля pymalloc был удалён).Доступность: Unix.
-
sys.addaudithook(hook) -
Добавляет вызываемый объект hook в список активных аудиторных хуков для текущего (под)интерпретатора.
Когда аудиторное событие поднимается через функцию
sys.audit(), каждый хук вызывается в порядке его добавления со именем события и кортежем аргументов. Родные хуки, добавленные с помощьюPySys_AddAuditHook(), вызываются первыми, за которыми следуют хуки, добавленные в текущем (под)интерпретаторе. Хуки могут регистрировать событие, генерировать исключение для прерывания операции или полностью завершить процесс.Обратите внимание, что аудиторные хуки предназначены в первую очередь для сбора информации о внутренних или иным образом не наблюдаемых действиях, как со стороны Python, так и со стороны библиотек, написанных на Python. Они не подходят для реализации «песочницы». В частности, вредоносный код может тривиально отключить или обойти хуки, добавленные с помощью этой функции. По меньшей мере, все хуки, связанные с безопасностью, должны быть добавлены с помощью API на C
PySys_AddAuditHook()до инициализации среды выполнения, а любые модули, позволяющие произвольную модификацию памяти (например,ctypes) должны быть полностью удалены или тщательно контролироваться.Вызов
sys.addaudithook()сам по себе вызывает аудиторное событие с именемsys.addaudithookбез аргументов. Если какой-либо существующий хук генерирует исключение, производное отRuntimeError, новый хук не будет добавлен, а исключение будет подавлено. В результате, вызывающие функции не могут гарантировать, что их хук был добавлен, если они не контролируют все существующие хуки.См. таблицу аудиторных событий для всех событий, генерируемых CPython, и PEP 578 для первоначального обсуждения дизайна.
Добавлен в версии 3.8.
Изменено в версии 3.8.1: Исключения, производные от
Exception, но не отRuntimeError, больше не подавляются.Деталь реализации CPython: При включенном трассировании (см.
settrace()), хуки Python отслеживаются только если у вызываемого объекта есть член__cantrace__, установленный в истинное значение. В противном случае, функции трассировки пропустят хук.
-
sys.argv -
Список аргументов командной строки, переданных скрипту Python.
argv[0]— имя скрипта (зависит от операционной системы, является ли это полным путём или нет). Если интерпретатор был запущен с опцией командной строки-c,argv[0]устанавливается в строку'-c'. Если имя скрипта не было передано интерпретатору Python, тоargv[0]— пустая строка.Для циклического прохода по стандартному вводу или списку файлов, переданных в командной строке, см. модуль
fileinput.См. также
sys.orig_argv.Примечание
В Unix аргументы командной строки передаются в виде байтов из ОС. Python декодирует их с помощью кодировки файловой системы и обработчика ошибок “surrogateescape”. Если вам нужны исходные байты, вы можете получить их с помощью
[os.fsencode(arg) for arg in sys.argv].
-
sys.audit(event, *args) -
Вызывает аудиторное событие и запускает все активные аудиторные хуки. event — строка, идентифицирующая событие, а args может содержать необязательные аргументы с дополнительной информацией о событии. Количество и типы аргументов для данного события считаются частью публичного и стабильного API и не должны изменяться между версиями.
Например, одно аудиторное событие имеет имя
os.chdir. Это событие имеет один аргумент под названием path, который будет содержать запрашиваемый новый рабочий каталог.sys.audit()вызывает существующие аудиторные хуки, передавая им имя события и аргументы, и перевыбрасывает первое исключение от любого хука. В общем случае, если происходит исключение, его не нужно обрабатывать, и процесс нужно завершить как можно быстрее. Это позволяет реализациям хуков решать, как реагировать на конкретные события: они могут просто зарегистрировать событие или прервать операцию, выбросив исключение.Хуки добавляются с помощью функций
sys.addaudithook()илиPySys_AddAuditHook().Аналог этой функции на уровне C —
PySys_Audit(). Желательно использовать родную функцию, если это возможно.См. таблицу аудиторных событий для всех событий, генерируемых CPython.
Добавлен в версии 3.8.
-
sys.base_exec_prefix -
Устанавливается во время запуска Python, до выполнения
site.py, с тем же значением, что иexec_prefix. Если выполняется не в виртуальной среде, значения остаются неизменными; еслиsite.pyобнаруживает использование виртуальной среды, значенияprefixиexec_prefixбудут изменены для указания на виртуальную среду, в то время какbase_prefixиbase_exec_prefixостанутся ориентированными на базу установки Python (той, из которой была создана виртуальная среда).Добавлен в версии 3.3.
-
sys.base_prefix -
Устанавливается во время запуска Python, до выполнения
site.py, с тем же значением, что иprefix. Если выполняется не в виртуальной среде, значения остаются неизменными; еслиsite.pyобнаруживает использование виртуальной среды, значенияprefixиexec_prefixбудут изменены для указания на виртуальную среду, в то время какbase_prefixиbase_exec_prefixостанутся ориентированными на базу установки Python (той, из которой была создана виртуальная среда).Добавлен в версии 3.3.
-
sys.byteorder -
Индикатор родного порядка байтов. Будет иметь значение
'big'на платформах с big-endian (сначала самый старший байт) и'little'на платформах с little-endian (сначала младший байт).
-
sys.builtin_module_names -
Кортеж строк, содержащих имена всех модулей, скомпилированных в эту интерпретацию Python. (Эта информация недоступна другими способами —
modules.keys()показывает только импортированные модули.)См. также список
sys.stdlib_module_names.
-
sys.call_tracing(func, args) -
Вызов
func(*args), при включённом отслеживании. Состояние отслеживания сохраняется и восстанавливается после этого. Это предназначено для вызова из отладчика из контрольной точки, для рекурсивной отладки или профилирования некоторого другого кода.Отслеживание приостанавливается при вызове функции отслеживания, установленной с помощью
settrace()илиsetprofile(), чтобы избежать бесконечной рекурсии.call_tracing()включает явную рекурсию функции отслеживания.
-
sys.copyright -
Строка, содержащая копирайт интерпретатора Python.
-
sys._clear_type_cache() -
Очистить внутренний кэш типов. Кэш типов используется для ускорения поиска атрибутов и методов. Используйте функцию только для удаления ненужных ссылок во время отладки утечек памяти.
Эта функция должна использоваться только для внутренних и специализированных целей.
-
sys._current_frames() -
Возвращает словарь, сопоставляющий идентификатор каждого потока с самым верхним стековым фреймом, активным в этом потоке в момент вызова функции. Обратите внимание, что функции в модуле
tracebackмогут построить стек вызовов на основе такого фрейма.Это наиболее полезно для отладки тупиков: эта функция не требует сотрудничества заблокированных потоков, и стеки вызовов таких потоков замораживаются до тех пор, пока они остаются заблокированными. Фрейм, возвращенный для неблокированного потока, может не иметь отношения к текущей активности этого потока к тому времени, когда вызывающий код исследует фрейм.
Эта функция должна использоваться только для внутренних и специализированных целей.
Вызывает событие отладки событие отладки
sys._current_framesбез аргументов.
-
sys._current_exceptions() -
Возвращает словарь, сопоставляющий идентификатор каждого потока с самой верхней исключительной ситуацией, активной в этом потоке в момент вызова функции. Если поток в данный момент не обрабатывает исключение, он не включается в результирующий словарь.
Это наиболее полезно для статистического профилирования.
Эта функция должна использоваться только для внутренних и специализированных целей.
Вызывает событие отладки событие отладки
sys._current_exceptionsбез аргументов.Изменено в версии 3.12: Теперь каждое значение в словаре представляет собой экземпляр исключения, а не кортеж из 3 элементов, как возвращалось из
sys.exc_info().
-
sys.breakpointhook() -
Эта функция-обработчик вызывается встроенной функцией
breakpoint(). По умолчанию она переводит вас в отладчикpdb, но её можно установить на любую другую функцию, чтобы выбрать используемый отладчик.Подпись этой функции зависит от того, что она вызывает. Например, стандартное привязывание (например,
pdb.set_trace()) не ожидает аргументов, но вы можете привязать его к функции, которая ожидает дополнительные аргументы (позиционные и/или именованные). Встроенная функцияbreakpoint()пропускает свои аргументы*argsи**kwsнапрямую. То, что возвращаетbreakpointhooks(), возвращается изbreakpoint().Встроенное реализация сначала обращается к переменной среды
PYTHONBREAKPOINT. Если она установлена на"0", эта функция возвращает немедленно; т.е. она является бездействующей. Если переменная среды не установлена или установлена на пустую строку, вызываетсяpdb.set_trace(). В противном случае эта переменная должна содержать имя функции для выполнения, используя обозначение точечного импорта Python, напримерpackage.subpackage.module.function. В этом случаеpackage.subpackage.moduleбудет импортирован, а полученный модуль должен содержать вызываемый элемент с именемfunction(). Этот элемент будет запущен, передавая*argsи**kws, и то, что вернётfunction(), вернётся изsys.breakpointhook()в функцию встроеннуюbreakpoint().Обратите внимание, что если что-то пойдёт не так во время импорта вызываемого элемента, названного
PYTHONBREAKPOINT, будет выведено предупреждениеRuntimeWarning, и точка останова будет проигнорирована.Также обратите внимание, что если
sys.breakpointhook()переопределяется программно,PYTHONBREAKPOINTне используется.Добавлена в версии 3.7.
-
sys._debugmallocstats() -
Вывести информацию низкого уровня в stderr об состоянии выделения памяти CPython.
Если Python был скомпилирован в режиме отладки (
configure --with-pydebug option), он также выполнит некоторые дорогостоящие проверки внутренней согласованности.Добавлена в версии 3.3.
Деталь реализации CPython: Эта функция специфична для CPython. Точный формат вывода здесь не определён и может изменяться.
-
sys.dllhandle -
Целое число, задающее дескриптор DLL Python.
Доступность: Windows.
-
sys.displayhook(value) -
Если значение не равно
None, эта функция выводитrepr(value)вsys.stdoutи сохраняет значение вbuiltins._. Еслиrepr(value)невозможно закодировать вsys.stdout.encodingс обработчиком ошибокsys.stdout.errors(что, вероятно,'strict'), закодируйте его вsys.stdout.encodingс обработчиком ошибок'backslashreplace'.sys.displayhookвызывается при оценке выражения, введённого в интерактивной сессии Python. Отображение этих значений можно настроить, назначив другую одноаргументную функциюsys.displayhook.Псевдокод:
def displayhook(value): if value is None: return # Set '_' to None to avoid recursion builtins._ = None text = repr(value) try: sys.stdout.write(text) except UnicodeEncodeError: bytes = text.encode(sys.stdout.encoding, 'backslashreplace') if hasattr(sys.stdout, 'buffer'): sys.stdout.buffer.write(bytes) else: text = bytes.decode(sys.stdout.encoding, 'strict') sys.stdout.write(text) sys.stdout.write("\n") builtins._ = valueИзменено в версии 3.2: Используйте обработчик ошибок
'backslashreplace'дляUnicodeEncodeError.
-
sys.dont_write_bytecode -
Если это значение истинно, Python не будет пытаться записать файлы
.pycпри импорте исходных модулей. Это значение изначально устанавливается вTrueилиFalseв зависимости от параметра командной строки-Bи переменной средыPYTHONDONTWRITEBYTECODE, но вы можете установить его самостоятельно, чтобы управлять генерацией файлов байткода.
-
sys._emscripten_info -
Кортеж со именами, содержащий информацию об окружении на платформе wasm32-emscripten. Кортеж с именами является предварительным и может измениться в будущем.
-
_emscripten_info.emscripten_version -
Версия Emscripten как кортеж целых чисел (major, minor, micro), например
(3, 1, 8).
-
_emscripten_info.runtime -
Строка среды выполнения, например, пользовательский агент браузера,
'Node.js v14.18.2'или'UNKNOWN'.
-
_emscripten_info.pthreads -
True, если Python был скомпилирован с поддержкой Emscripten pthreads.
-
True, если Python был скомпилирован с поддержкой общей памяти.
Доступность: Emscripten.
Добавлена в версии 3.11.
-
-
sys.pycache_prefix -
Если это установлено (не
None), Python будет записывать кеш байткода.pycфайлы в (и читать их из) параллельной древовидной директории, корень которой находится в этой директории, а не из__pycache__каталогов в дереве исходного кода. Любые__pycache__директории в дереве исходного кода будут проигнорированы, и новые файлы.pycбудут записаны внутри префикса pycache. Таким образом, если вы используетеcompileallв качестве шага предварительной сборки, вы должны убедиться, что вы запускаете его с тем же префиксом pycache (если таковой имеется), который вы будете использовать во время выполнения.Относительный путь интерпретируется относительно текущей рабочей директории.
Это значение изначально устанавливается на основе значения командной строки
-Xpycache_prefix=PATHпараметра или переменной окруженияPYTHONPYCACHEPREFIX(командная строка имеет приоритет). Если ни то, ни другое не установлено, оноNone.Добавлена в версии 3.8.
-
sys.excepthook(type, value, traceback) -
Эта функция выводит заданную трассировку стека и исключение в
sys.stderr.Когда возникает исключение, отличное от
SystemExitи оно не перехватывается, интерпретатор вызываетsys.excepthookс тремя аргументами: классом исключения, экземпляром исключения и объектом трассировки. В интерактивной сессии это происходит непосредственно перед возвратом управления в командную строку; в программе Python это происходит непосредственно перед завершением программы. Обработка таких исключений верхнего уровня может быть настраиваемой путем присвоения другой функции с тремя аргументами кsys.excepthook.Вызывает событие аудита
sys.excepthookс аргументамиhook,type,value,tracebackпри возникновении неперехваченного исключения. Если ни один обработчик не установлен,hookможет бытьNone. Если какой-либо обработчик вызывает исключение, производное отRuntimeError, вызов обработчика будет подавлен. В противном случае, исключение обработчика аудита будет сообщено как неперехватываемое, и будет вызваноsys.excepthook.См. также
Функция
sys.unraisablehook()обрабатывает неперехватываемые исключения, а функцияthreading.excepthook()обрабатывает исключения, возбужденные функциейthreading.Thread.run().
-
sys.__breakpointhook__ -
sys.__displayhook__ -
sys.__excepthook__ -
sys.__unraisablehook__ -
Эти объекты содержат исходные значения
breakpointhook,displayhook,excepthookиunraisablehookв начале программы. Они сохраняются для того, чтобыbreakpointhook,displayhookиexcepthook,unraisablehookмогли быть восстановлены в случае, если они случайно заменены неисправленными или альтернативными объектами.Добавлена в версии 3.7: __breakpointhook__
Добавлена в версии 3.8: __unraisablehook__
-
sys.exception() -
Эта функция, когда вызывается во время выполнения обработчика исключений (например,
exceptилиexcept*), возвращает экземпляр исключения, который был перехвачен этим обработчиком. При вложенных обработчиках исключений доступен только экземпляр исключения, перехваченный внутренним обработчиком.Если никакой обработчик исключений не выполняется, эта функция возвращает
None.Добавлена в версии 3.11.
-
sys.exc_info() -
Эта функция возвращает представление исключения старого стиля. Если в данный момент обрабатывается исключение (то есть
exception()вернетe),exc_info()возвращает кортеж(type(e), e, e.__traceback__). То есть, кортеж, содержащий тип исключения (подклассBaseException), само исключение и объект трассировки, который, как правило, содержит стек вызовов в тот момент, когда исключение произошло в последний раз.Если нигде в стеке не обрабатывается исключение, эта функция возвращает кортеж, содержащий три
Noneзначения.Изменено в версии 3.11: Поля
typeиtracebackтеперь выводятся изvalue(экземпляра исключения), поэтому при изменении исключения во время его обработки изменения отображаются в результатах последующих вызововexc_info().
-
sys.exec_prefix -
Строка, содержащая префикс каталога, специфичный для сайта, где установлены платформозависимые файлы Python; по умолчанию, это также
'/usr/local'. Это может быть установлено во время сборки с помощью аргумента--exec-prefixскрипта configure. В частности, все конфигурационные файлы (например, заголовочный файлpyconfig.h) устанавливаются в каталогеexec_prefix/lib/pythonX.Y/config, а модули общих библиотек устанавливаются вexec_prefix/lib/pythonX.Y/lib-dynload, где X.Y — номер версии Python, например3.2.Примечание
Если активна виртуальная среда virtual environment, это значение будет изменено в
site.py, чтобы указывать на виртуальную среду. Значение для установки Python все еще будет доступно черезbase_exec_prefix.
-
sys.executable -
Строка, содержащая абсолютный путь к исполняемому файлу интерпретатора Python, на системах, где это имеет смысл. Если Python не может получить реальный путь к своему исполняемому файлу,
sys.executableбудет пустой строкой илиNone.
-
sys.exit([arg]) -
Возбуждает исключение
SystemExit, сигнализируя об намерении выйти из интерпретатора.Необязательный аргумент arg может быть целым числом, задающим код выхода (по умолчанию ноль), или другим типом объекта. Если это целое число, ноль считается «успешным завершением», а любое ненулевое значение считается «ненормальным завершением» оболочками и подобными им. Большинство систем требуют, чтобы он был в диапазоне от 0 до 127, а в противном случае результаты будут неопределенными. Некоторые системы имеют соглашение о назначении определенных значений кодам выхода, но они обычно слабо разработаны; программы Unix обычно используют 2 для ошибок синтаксиса командной строки и 1 для всех других видов ошибок. Если передается объект другого типа,
Noneэквивалентно передаче нуля, а любой другой объект выводится вstderrи приводит к коду выхода 1. В частности,sys.exit("some error message")— это быстрый способ завершить программу при возникновении ошибки.Поскольку
exit()в конечном счете «только» вызывает исключение, оно выйдет из процесса только при вызове из основного потока, и исключение не перехватывается. Действия очистки, указанные в блоках finally операторовtry, выполняются, и можно перехватить попытку выхода на внешнем уровне.Изменено в версии 3.6: Если при очистке после того, как интерпретатор Python поймал
SystemExit(например, при сбросе буферизированных данных в стандартных потоках), возникает ошибка, код выхода изменяется на 120.
-
sys.flags -
Кортеж с именованными полями flags отображает состояние флагов командной строки. Атрибуты являются только для чтения.
-
flags.debug
-
flags.inspect
-
flags.interactive
-
flags.isolated
-
flags.optimize
-
flags.dont_write_bytecode
-
flags.no_user_site
-
flags.no_site
-
flags.ignore_environment
-
flags.verbose
-
flags.bytes_warning
-
flags.quiet
-
flags.hash_randomization
-
flags.dev_mode
-
flags.utf8_mode
-
flags.safe_path
-
flags.int_max_str_digits
-X int_max_str_digits(Ограничение длины целых чисел при преобразовании в строки)-
flags.warn_default_encoding
Изменено в версии 3.2: Добавлен атрибут
quietдля нового флага-q.Добавлен в версии 3.2.3: Атрибут
hash_randomization.Изменено в версии 3.3: Удален устаревший атрибут
division_warning.Изменено в версии 3.4: Добавлен атрибут
isolatedдля флага-Iisolated.Изменено в версии 3.7: Добавлен атрибут
dev_modeдля нового режима разработки Python и атрибутutf8_modeдля нового флага-Xutf8.Изменено в версии 3.10: Добавлен атрибут
warn_default_encodingдля флага-Xwarn_default_encoding.Изменено в версии 3.11: Добавлен атрибут
safe_pathдля опции-P.Изменено в версии 3.11: Добавлен атрибут
int_max_str_digits. -
-
sys.float_info -
Кортеж с именем, содержащий информацию о типе float. Он содержит информацию низкого уровня о точности и внутреннем представлении. Значения соответствуют различным константам с плавающей запятой, определённым в стандартном заголовочном файле
float.hдля языка программирования ‘C’; см. раздел 5.2.4.2.2 стандарта ISO/IEC C 1999 [C99], «Характеристики типов с плавающей запятой», для получения подробностей.Атрибуты кортежа с именем float_infoатрибут
макрос float.h
объяснение
-
float_info.epsilon
DBL_EPSILONРазница между 1.0 и наименьшим значением, большим 1.0, которое может быть представлено как float.
См. также
math.ulp().-
float_info.dig
DBL_DIGМаксимальное число десятичных знаков, которые могут быть надёжно представлены в float; см. ниже.
-
float_info.mant_dig
DBL_MANT_DIGТочность float: количество цифр по основанию
radixв мантиссе float.-
float_info.max
DBL_MAXМаксимальное представимое положительное конечное float.
-
float_info.max_exp
DBL_MAX_EXPМаксимальное целое число e такое, что
radix**(e-1)является представимым конечным float.-
float_info.max_10_exp
DBL_MAX_10_EXPМаксимальное целое число e такое, что
10**eнаходится в диапазоне представимых конечных float.-
float_info.min
DBL_MINМинимальное представимое положительное нормализованное float.
Используйте
math.ulp(0.0)для получения наименьшего положительного денормализованного представимого float.-
float_info.min_exp
DBL_MIN_EXPМинимальное целое число e такое, что
radix**(e-1)является нормализованным float.-
float_info.min_10_exp
DBL_MIN_10_EXPМинимальное целое число e такое, что
10**eявляется нормализованным float.-
float_info.radix
FLT_RADIXОснование экспоненциального представления.
-
float_info.rounds
FLT_ROUNDSЦелое число, представляющее режим округления для арифметики с плавающей запятой. Это отражает значение системного
FLT_ROUNDSмакроса во время запуска интерпретатора:-
-1: неопределённый -
0: к нулю -
1: к ближайшему -
2: к положительной бесконечности -
3: к отрицательной бесконечности
Все остальные значения для
FLT_ROUNDSхарактеризуют поведение округления, определённое реализацией.Атрибут
sys.float_info.digнуждается в дополнительном объяснении. Еслиs— это любая строка, представляющая десятичное число с не более чемsys.float_info.digзначащими цифрами, то преобразованиеsв float и обратно восстановит строку, представляющую то же самое десятичное значение:>>> import sys >>> sys.float_info.dig 15 >>> s = '3.14159265358979' # decimal string with 15 significant digits >>> format(float(s), '.15g') # convert to float and back -> same value '3.14159265358979'
Но для строк с более чем
sys.float_info.digзначащими цифрами, это не всегда верно:>>> s = '9876543211234567' # 16 significant digits is too many! >>> format(float(s), '.16g') # conversion changes value '9876543211234568'
-
-
sys.float_repr_style -
Строка, указывающая, как функция
repr()ведёт себя для чисел с плавающей запятой. Если строка имеет значение'short', то для конечного floatx,repr(x)стремится произвести короткую строку с свойствомfloat(repr(x)) == x. Это обычное поведение в Python 3.1 и более поздних версиях. В противном случае,float_repr_styleимеет значение'legacy'иrepr(x)ведёт себя так же, как в версиях Python до 3.1.Добавлен в версии 3.1.
-
sys.getallocatedblocks() -
Возвращает количество блоков памяти, в настоящее время выделенных интерпретатором, независимо от их размера. Эта функция в основном полезна для отслеживания и отладки утечек памяти. Из-за внутренних кэшей интерпретатора результат может меняться при каждом вызове; вам может потребоваться вызвать
_clear_type_cache()иgc.collect()для получения более предсказуемых результатов.Если сборка или реализация Python не могут разумно вычислить эту информацию,
getallocatedblocks()может вернуть 0 вместо этого.Добавлен в версии 3.4.
-
sys.getunicodeinternedsize() -
Возвращает количество интернированных объектов unicode.
Добавлен в версии 3.12.
-
sys.getandroidapilevel() -
Возвращает версию API Android, полученную во время сборки, как целое число.
Доступность: Android.
Добавлен в версии 3.7.
-
sys.getdefaultencoding() -
Возвращает имя текущего кодирования строк по умолчанию, используемого реализацией Unicode.
-
sys.getdlopenflags() -
Возвращает текущее значение флагов, используемых для вызовов
dlopen(). Символические имена значений флагов можно найти в модулеos(константыRTLD_xxx, например,os.RTLD_LAZY).Доступность: Unix.
-
sys.getfilesystemencoding() -
Получить кодировку файловой системы: кодировку, используемую с обработчиком ошибок файловой системы для преобразования между именами файлов Unicode и именами файлов в байтах. Обработчик ошибок файловой системы возвращается из
getfilesystemencodeerrors().Для наилучшей совместимости следует использовать str для имён файлов во всех случаях, хотя представление имён файлов в виде байтов также поддерживается. Функции, принимающие или возвращающие имена файлов, должны поддерживать как str, так и bytes и внутренне преобразовывать их в предпочтительное представление системы.
os.fsencode()иos.fsdecode()следует использовать для обеспечения правильного кодирования и режима ошибок.Кодировка и обработчик ошибок файловой системы настраиваются при запуске Python функцией
PyConfig_Read(): см. членыfilesystem_encodingиfilesystem_errorsструктурыPyConfig.Изменено в версии 3.2:
getfilesystemencoding()больше не может бытьNone.Изменено в версии 3.6: Windows больше не гарантирует возвращение
'mbcs'. См. PEP 529 и_enablelegacywindowsfsencoding()для получения дополнительной информации.Изменено в версии 3.7: Возвращает
'utf-8', если включен режим Python UTF-8.
-
sys.getfilesystemencodeerrors() -
Получить обработчик ошибок файловой системы: обработчик ошибок, используемый с кодировкой файловой системы для преобразования между именами файлов Unicode и именами файлов в байтах. Кодировка файловой системы возвращается из
getfilesystemencoding().os.fsencode()иos.fsdecode()следует использовать для обеспечения правильного кодирования и режима ошибок.Кодировка и обработчик ошибок файловой системы настраиваются при запуске Python функцией
PyConfig_Read(): см. членыfilesystem_encodingиfilesystem_errorsструктурыPyConfig.Добавлена в версии 3.6.
-
sys.get_int_max_str_digits() -
Возвращает текущее значение ограничения длины строки преобразования целого числа длины строки преобразования целых чисел. См. также
set_int_max_str_digits().Добавлена в версии 3.11.
-
sys.getrefcount(object) -
Возвращает счетчик ссылок на объект. Возвращаемый счет обычно на единицу больше ожидаемого, потому что он включает (временную) ссылку в качестве аргумента к
getrefcount().Обратите внимание, что возвращаемое значение может не точно отражать фактическое количество ссылок на объект. Например, некоторые объекты являются «бессмертными» и имеют очень большой счетчик ссылок, который не отражает фактическое количество ссылок. Поэтому не полагайтесь на точность возвращаемого значения, кроме значений 0 или 1.
Изменено в версии 3.12: Бессмертные объекты имеют очень большие счетчики ссылок, которые не соответствуют фактическому количеству ссылок на объект.
-
sys.getrecursionlimit() -
Возвращает текущее значение ограничения рекурсии — максимальную глубину стека интерпретатора Python. Это ограничение предотвращает бесконечную рекурсию, вызывающую переполнение стека C и сбой Python. Его можно установить с помощью
setrecursionlimit().
-
sys.getsizeof(object[, default]) -
Возвращает размер объекта в байтах. Объект может быть любого типа. Все встроенные объекты вернут правильные результаты, но это не обязательно верно для расширений сторонних разработчиков, так как это зависит от реализации.
Учитывается только потребление памяти, непосредственно связанное с объектом, а не потребление памяти объектов, на которые он ссылается.
Если задано default, оно будет возвращено, если объект не предоставляет способ получить размер. В противном случае будет поднято исключение
TypeError.getsizeof()вызывает метод__sizeof__объекта и добавляет дополнительную нагрузку сборщика мусора, если объект управляется сборщиком мусора.См. рецепт рекурсивного sizeof для примера использования
getsizeof()рекурсивно для поиска размера контейнеров и всех их содержимых.
-
sys.getswitchinterval() -
Возвращает «интервал переключения потоков» интерпретатора; см.
setswitchinterval().Добавлена в версии 3.2.
-
sys._getframe([depth]) -
Возвращает объект кадра из стека вызовов. Если задан необязательный целочисленный параметр depth, возвращает объект кадра, расположенный на указанное количество вызовов ниже вершины стека. Если глубина больше, чем глубина стека вызовов, генерируется
ValueError. По умолчанию depth равен нулю, возвращая кадр в верхней части стека вызовов.Вызывает событие аудита
sys._getframeс аргументомframe.Подробность реализации CPython: Эта функция должна использоваться только для внутренних и специализированных целей. Она не гарантируется в всех реализациях Python.
-
sys._getframemodulename([depth]) -
Возвращает имя модуля из стека вызовов. Если задан необязательный целочисленный параметр depth, возвращает модуль, расположенный на указанное количество вызовов ниже вершины стека. Если глубина больше, чем глубина стека вызовов, или модуль не может быть идентифицирован, возвращается
None. По умолчанию depth равен нулю, возвращая модуль в верхней части стека вызовов.Вызывает событие аудита
sys._getframemodulenameс аргументомdepth.Подробность реализации CPython: Эта функция должна использоваться только для внутренних и специализированных целей. Она не гарантируется в всех реализациях Python.
-
sys.getprofile() -
Получить функцию профилирования, установленную с помощью
setprofile().
-
sys.gettrace() -
Получить функцию отслеживания, установленную с помощью
settrace().Подробность реализации CPython: Функция
gettrace()предназначена только для реализации отладчиков, профилеров, инструментов покрытия и т. п. Ее поведение является частью платформы реализации, а не частью определения языка, и, следовательно, может быть недоступна во всех реализациях Python.
-
sys.getwindowsversion() -
Возвращает кортеж с именованными элементами, описывающий текущую версию Windows. Имена элементов: major, minor, build, platform, service_pack, service_pack_minor, service_pack_major, suite_mask, product_type и platform_version. service_pack содержит строку, platform_version — кортеж из 3 элементов, а все остальные значения — целые числа. К элементам можно обратиться по имени, например,
sys.getwindowsversion()[0]эквивалентноsys.getwindowsversion().major. Для совместимости с предыдущими версиями, первые 5 элементов доступны также по индексу.platform будет
2(VER_PLATFORM_WIN32_NT).product_type может принимать следующие значения:
Константа
Значение
1(VER_NT_WORKSTATION)Система — рабочая станция.
2(VER_NT_DOMAIN_CONTROLLER)Система — контроллер домена.
3(VER_NT_SERVER)Система — сервер, но не контроллер домена.
Эта функция оборачивает Win32 функцию
GetVersionEx(); см. документацию Microsoft поOSVERSIONINFOEX()для получения дополнительной информации о этих полях.platform_version возвращает главную версию, второстепенную версию и номер сборки текущей операционной системы, а не версии, эмулируемой для процесса. Он предназначен для использования в ведении журналов, а не для определения функций.
Примечание
platform_version извлекает версию из kernel32.dll, которая может отличаться от версии ОС. Для получения точной версии ОС используйте модуль
platform.Доступность: Windows.
Изменено в версии 3.2: Изменено на кортеж с именованными элементами и добавлены service_pack_minor, service_pack_major, suite_mask и product_type.
Изменено в версии 3.6: Добавлен platform_version
-
sys.get_asyncgen_hooks() -
Возвращает объект asyncgen_hooks, похожий на
namedtupleвида(firstiter, finalizer), где firstiter и finalizer ожидают либоNone, либо функции, принимающие итератор асинхронного генератора в качестве аргумента, и используются для планирования завершения работы асинхронного генератора в цикле событий.Добавлена в версии 3.6: См. PEP 525 для более подробной информации.
Примечание
Эта функция добавлена на условной основе (см. PEP 411 для подробностей).
-
sys.get_coroutine_origin_tracking_depth() -
Получить текущую глубину отслеживания происхождения корутины, установленную с помощью
set_coroutine_origin_tracking_depth().Добавлена в версии 3.7.
Примечание
Эта функция добавлена на условной основе (см. PEP 411 для подробностей). Используйте только для отладки.
-
sys.hash_info -
Кортеж с именованными элементами, содержащий параметры реализации хэширования числовых типов. Для получения более подробной информации о хэшировании числовых типов, см. Хэширование числовых типов.
-
hash_info.width -
Ширина в битах, используемая для значений хеша.
-
hash_info.modulus -
Простое основание P, используемое для схемы хэширования числовых типов.
-
hash_info.inf -
Значение хеша, возвращаемое для положительной бесконечности.
-
hash_info.nan -
(Этот атрибут больше не используется)
-
hash_info.imag -
Множитель, используемый для мнимой части комплексного числа.
-
hash_info.algorithm -
Имя алгоритма для хэширования str, bytes и memoryview.
-
hash_info.hash_bits -
Внутренний размер вывода алгоритма хэширования.
-
hash_info.seed_bits -
Размер ключа семян алгоритма хэширования.
Добавлена в версии 3.2.
Изменено в версии 3.4: Добавлены algorithm, hash_bits и seed_bits
-
-
sys.hexversion -
Номер версии, закодированный в одном целом числе. Гарантируется, что он будет увеличиваться с каждой версией, включая надлежащую поддержку непроизводственных релизов. Например, чтобы проверить, что интерпретатор Python не ниже версии 1.5.2, используйте:
if sys.hexversion >= 0x010502F0: # use some advanced feature ... else: # use an alternative implementation or warn the user ...Это называется
hexversion, так как оно действительно имеет смысл только при просмотре результата его передачи в встроенную функциюhex(). Кортеж с именованными элементамиsys.version_infoможет использоваться для более удобного отображения той же информации.Более подробную информацию о
hexversionможно найти в API и ABI версия.
-
sys.implementation -
Объект, содержащий информацию об реализации текущего интерпретатора Python. Следующие атрибуты должны существовать во всех реализациях Python.
name — идентификатор реализации, например,
'cpython'. Фактическая строка определяется реализацией Python, но гарантируется, что она будет в нижнем регистре.version — кортеж с именованными элементами, в том же формате, что и
sys.version_info. Он представляет версию реализации Python. Это имеет разное значение от конкретной версии языка Python, которому соответствует текущий интерпретатор, которыйsys.version_infoпредставляет. Например, для PyPy 1.8sys.implementation.versionможет бытьsys.version_info(1, 8, 0, 'final', 0), в то время какsys.version_infoбудетsys.version_info(2, 7, 2, 'final', 0). Для CPython они имеют одинаковое значение, поскольку это справочная реализация.hexversion — версия реализации в шестнадцатеричном формате, как в
sys.hexversion.cache_tag — тег, используемый механизмом импорта в именах файлов кэшированных модулей. По соглашению, он будет составлен из имени и версии реализации, например,
'cpython-33'. Однако реализация Python может использовать какое-либо другое значение, если это уместно. Еслиcache_tagустановлено вNone, это указывает на то, что кэширование модулей должно быть отключено.sys.implementationможет содержать дополнительные атрибуты, специфичные для реализации Python. Эти нестандартные атрибуты должны начинаться с подчеркивания и здесь не описаны. Независимо от его содержимого,sys.implementationне будет изменяться во время выполнения интерпретатора, а также между версиями реализации. (Однако он может измениться между версиями языка Python). См. PEP 421 для получения дополнительной информации.Добавлена в версии 3.3.
Примечание
Добавление новых обязательных атрибутов должно проходить через стандартный процесс PEP. См. PEP 421 для получения дополнительной информации.
-
sys.int_info -
A именованный кортеж хранящий информацию об внутренней представлении целых чисел в Python. Атрибуты являются только для чтения.
-
int_info.bits_per_digit -
Количество битов, хранимых в каждом разряде. Целые числа Python хранятся в внутренней системе счисления с основанием
2**int_info.bits_per_digit.
-
int_info.sizeof_digit -
Размер в байтах типа C, используемого для представления разряда.
-
int_info.default_max_str_digits -
Значение по умолчанию для
sys.get_int_max_str_digits(), если оно не настроено явно.
-
int_info.str_digits_check_threshold -
Минимальное ненулевое значение для
sys.set_int_max_str_digits(),PYTHONINTMAXSTRDIGITS, или-X int_max_str_digits.
Добавлена в версии 3.1.
Изменена в версии 3.11: Добавлены
default_max_str_digitsиstr_digits_check_threshold. -
-
sys.__interactivehook__ -
Если этот атрибут существует, его значение автоматически вызывается (без аргументов) при запуске интерпретатора в интерактивном режиме. Это выполняется после чтения файла
PYTHONSTARTUP, чтобы вы могли установить этот обработчик там. Модульsiteустанавливает его.Вызывает событие аудита
cpython.run_interactivehookс объектом обработчика в качестве аргумента при вызове обработчика при запуске.Добавлена в версии 3.4.
-
sys.intern(string) -
Вставляет строку в таблицу «интернированных» строк и возвращает интернированную строку – которая является самой строкой или её копией. Интернирование строк полезно для повышения производительности при поиске в словаре – если ключи в словаре интернированы, и ключ поиска интернирован, сравнения ключей (после хэширования) можно выполнить по указателю вместо сравнения строк. Обычно имена, используемые в программах Python, автоматически интернируются, и словари, используемые для хранения атрибутов модулей, классов или экземпляров, имеют интернированные ключи.
Интернированные строки не бессмертны; вы должны сохранить ссылку на возвращаемое значение
intern(), чтобы извлечь выгоду из этого.
-
sys.is_finalizing() -
Возвращает
True, если интерпретатор Python завершается,Falseв противном случае.Добавлена в версии 3.5.
-
sys.last_exc -
Эта переменная не всегда определена; она устанавливается в экземпляр исключения, когда исключение не обрабатывается, и интерпретатор печатает сообщение об ошибке и стек отладки. Предполагается, что это позволит интерактивному пользователю импортировать модуль отладчика и заняться постобработка отладки без необходимости повторного выполнения команды, которая вызвала ошибку. (Типичное использование —
import pdb; pdb.pm()для входа в отладчик постобработки; см.pdbмодуль для получения дополнительной информации.)Добавлена в версии 3.12.
-
sys.last_type -
sys.last_value -
sys.last_traceback -
Эти три переменные устарели; используйте
sys.last_excвместо них. Они хранят устаревшее представлениеsys.last_exc, возвращённое изexc_info()выше.
-
sys.maxsize -
Целое число, задающее максимальное значение, которое может принять переменная типа
Py_ssize_t. Обычно равно2**31 - 1на 32-битной платформе и2**63 - 1на 64-битной платформе.
-
sys.maxunicode -
Целое число, задающее значение наибольшего кода символа Юникода, т.е.
1114111(0x10FFFFв шестнадцатеричном формате).Изменено в версии 3.3: До PEP 393,
sys.maxunicodeбыло либо0xFFFF, либо0x10FFFF, в зависимости от параметра конфигурации, определяющего, хранятся ли символы Юникода как UCS-2 или UCS-4.
-
sys.meta_path -
Список объектов поисковиков мета-путей, у которых вызывается метод
find_spec()для проверки, может ли какой-либо из объектов найти модуль, который нужно импортировать. По умолчанию он содержит записи, реализующие стандартные семантики импорта Python. Методfind_spec()вызывается как минимум с абсолютным именем импортируемого модуля. Если импортируемый модуль находится в пакете, то атрибут__path__родительского пакета передаётся в качестве второго аргумента. Метод возвращает спецификацию модуля илиNone, если модуль не найден.См. также
-
importlib.abc.MetaPathFinder -
Абстрактный базовый класс, определяющий интерфейс объектов-поисковиков в
meta_path. -
importlib.machinery.ModuleSpec -
Конкретный класс, экземпляры которого должен возвращать метод
find_spec().
Изменено в версии 3.4: Спецификации модулей были введены в Python 3.4, в PEP 451.
Изменено в версии 3.12: Убран резервный механизм поиска метода
find_module(), если у записи вmeta_pathне было методаfind_spec(). -
-
sys.modules -
Это словарь, сопоставляющий имена модулей с уже загруженными модулями. Его можно изменять для принудительной перезагрузки модулей и других манипуляций. Однако, замена словаря не обязательно будет работать как ожидается, и удаление существенных элементов из словаря может привести к сбою Python. Если вы хотите перебирать этот глобальный словарь, всегда используйте
sys.modules.copy()илиtuple(sys.modules), чтобы избежать исключений, так как его размер может изменяться во время итерации в качестве побочного эффекта кода или активности в других потоках.
-
sys.orig_argv -
Список исходных аргументов командной строки, переданных исполняемому файлу Python.
Элементы
sys.orig_argvпредставляют аргументы интерпретатора Python, а элементыsys.argv— аргументы программы пользователя. Аргументы, обработанные самим интерпретатором, будут присутствовать вsys.orig_argvи отсутствовать вsys.argv.Добавлен в версии 3.10.
-
sys.path -
Список строк, определяющий путь поиска модулей. Инициализируется переменной среды
PYTHONPATH, плюс зависящим от установки значением по умолчанию.По умолчанию, при запуске программы, в
sys.pathдобавляется потенциально небезопасный путь (перед элементами, добавленными в результатеPYTHONPATH):-
python -m moduleкомандная строка: добавляет текущую рабочую директорию. -
python script.pyкомандная строка: добавляет директорию скрипта. Если это символическая ссылка, разрешает символические ссылки. -
python -c codeиpython(REPL) командные строки: добавляет пустую строку, что означает текущую рабочую директорию.
Чтобы не добавлять этот потенциально небезопасный путь, используйте опцию командной строки
-Pили переменную средыPYTHONSAFEPATH.Программа свободна изменять этот список по своему усмотрению. В
sys.pathдолжны добавляться только строки; все другие типы данных игнорируются при импорте. -
-
sys.path_hooks -
Список вызываемых объектов, которые принимают аргумент пути для попытки создания поисковика для пути. Если поисковик может быть создан, он возвращается вызываемым объектом; в противном случае генерируется
ImportError.Первоначально описано в PEP 302.
-
sys.path_importer_cache -
Словарь, работающий как кэш для объектов поисковика. Ключи — пути, переданные
sys.path_hooks, а значения — найденные поисковики. Если путь является допустимым путем к файловой системе, но поисковик не найден вsys.path_hooks, тоNoneхранится.Первоначально описано в PEP 302.
-
sys.platform -
Эта строка содержит идентификатор платформы, который можно использовать для добавления компонентов, специфичных для платформы, в
sys.path, например.Для Unix-систем, за исключением Linux и AIX, это строка с именем операционной системы в нижнем регистре, возвращаемая
uname -s, с первой частью версии, возвращаемойuname -r, добавленной, например,'sunos5'или'freebsd8', в момент построения Python. Поэтому рекомендуется использовать следующий фрагмент кода, если вы не хотите проверять конкретную версию системы:if sys.platform.startswith('freebsd'): # FreeBSD-specific code here... elif sys.platform.startswith('linux'): # Linux-specific code here... elif sys.platform.startswith('aix'): # AIX-specific code here...Для других систем значения следующие:
Система
Значение
platformAIX
'aix'Emscripten
'emscripten'Linux
'linux'WASI
'wasi'Windows
'win32'Windows/Cygwin
'cygwin'macOS
'darwin'Изменено в версии 3.3: В Linux,
sys.platformбольше не содержит номер основной версии. Она всегда равна'linux', а не'linux2'или'linux3'. Поскольку в более старых версиях Python номер версии присутствовал, рекомендуется всегда использовать представленный выше фрагмент кода.Изменено в версии 3.8: В AIX,
sys.platformбольше не содержит номер основной версии. Она всегда равна'aix', а не'aix5'или'aix7'. Поскольку в более старых версиях Python номер версии присутствовал, рекомендуется всегда использовать представленный выше фрагмент кода.См. также
os.nameимеет более грубую гранулярность.os.uname()предоставляет информацию о версии системы, зависящую от системы.Модуль
platformпредоставляет подробную проверку идентификации системы.
-
sys.platlibdir -
Имя каталога библиотек, специфичных для платформы. Используется для построения пути к стандартной библиотеке и путей к установленным модулям расширения.
На большинстве платформ он равен
"lib". На Fedora и SuSE, на 64-битных платформах, он равен"lib64", что даёт следующиеsys.pathпути (гдеX.Y— версия Pythonmajor.minor):-
/usr/lib64/pythonX.Y/: Стандартная библиотека (например,os.pyмодуляos) -
/usr/lib64/pythonX.Y/lib-dynload/: Модули расширения на C из стандартной библиотеки (например, модульerrno, точное имя файла зависит от платформы) -
/usr/lib/pythonX.Y/site-packages/(всегда используйтеlib, а неsys.platlibdir): Модули сторонних разработчиков -
/usr/lib64/pythonX.Y/site-packages/: Модули расширения на C из пакетов сторонних разработчиков
Добавлен в версии 3.9.
-
-
sys.prefix -
Строка, задающая префикс каталога, специфичного для сайта, где установлены независимые от платформы файлы Python; на Unix, значение по умолчанию —
/usr/local. Это можно установить во время сборки, используя аргумент--prefixк скрипту configure. См. Пути установки для выведенных путей.Примечание
Если используется виртуальная среда виртуальная среда, это значение будет изменено в
site.py, чтобы указывать на виртуальную среду. Значение для установки Python по-прежнему будет доступно черезbase_prefix.
-
sys.ps1 -
sys.ps2 -
Строки, определяющие первичный и вторичный приглашения интерпретатора. Они определены только если интерпретатор находится в интерактивном режиме. Их начальные значения в этом случае —
'>>> 'и'... '. Если переменной присваивается объект, не являющийся строкой, еёstr()переоценивается каждый раз, когда интерпретатор готовится прочитать новую интерактивную команду; это можно использовать для реализации динамического приглашения.
-
sys.setdlopenflags(n) -
Установите флаги, используемые интерпретатором для
dlopen()вызовов, таких как при загрузке интерпретатором модулей расширений. Среди прочего, это позволит выполнить ленивое разрешение символов при импорте модуля, если вызвано какsys.setdlopenflags(0). Чтобы обмениваться символами между модулями расширений, вызовите какsys.setdlopenflags(os.RTLD_GLOBAL). Символьные имена значений флагов можно найти в модулеos(RTLD_xxxконстанты, например,os.RTLD_LAZY).Доступность: Unix.
-
sys.set_int_max_str_digits(maxdigits) -
Установите ограничение длины строки целочисленного преобразования, используемое данной интерпретацией. См. также
get_int_max_str_digits().Добавлена в версии 3.11.
-
sys.setprofile(profilefunc) -
Установите системную функцию профилирования, которая позволяет реализовать профайлер кода Python в Python. Подробнее о профайлере Python см. главу Профайлеры Python. Системная функция профилирования вызывается аналогично системной функции отслеживания (см.
settrace()), но она вызывается с различными событиями, например, она не вызывается для каждой выполняемой строки кода (только при вызове и возвращении, но событие возврата сообщается даже при возникновении исключения). Функция специфична для потока, но у профайлера нет способа узнать о переключениях контекста между потоками, поэтому использование данной функции в присутствии нескольких потоков не имеет смысла. Кроме того, ее возвращаемое значение не используется, поэтому она может просто вернутьNone. Ошибка в функции профилирования приведет к ее сбросу.Примечание
Для
setprofile()используется тот же механизм отслеживания, что и дляsettrace(). Для отслеживания вызовов сsetprofile()внутри функции отслеживания (например, в точке останова отладчика) см.call_tracing().Функции профилирования должны иметь три аргумента: frame, event и arg. frame — текущая кадр стека. event — строка:
'call','return','c_call','c_return'или'c_exception'. arg зависит от типа события.События имеют следующее значение:
-
'call' -
Вызвается функция (или какой-либо другой блок кода). Вызывается функция профилирования; arg — это
None. -
'return' -
Функция (или другой блок кода) приближается к возвращению. Вызывается функция профилирования; arg — это значение, которое будет возвращено, или
None, если событие вызвано поднятием исключения. -
'c_call' -
Приближается к вызову функции C. Это может быть функция расширения или встроенная функция. arg — объект функции C.
-
'c_return' -
Функция C возвратила значение. arg — объект функции C.
-
'c_exception' -
Функция C подняла исключение. arg — объект функции C.
Вызывает событие аудита
sys.setprofileбез аргументов. -
-
sys.setrecursionlimit(limit) -
Установите максимальную глубину стека интерпретатора Python на limit. Это ограничение предотвращает бесконечную рекурсию, вызывающую переполнение стека C и аварийное завершение работы Python.
Максимальное возможное ограничение зависит от платформы. Пользователю может потребоваться установить более высокое ограничение, когда у него есть программа, требующая глубокой рекурсии, и платформа поддерживает более высокое ограничение. Это следует делать с осторожностью, так как слишком высокое ограничение может привести к аварийному завершению работы.
Если новое ограничение слишком низкое на текущей глубине рекурсии, возникает исключение
RecursionError.Изменено в версии 3.5.1: Исключение
RecursionErrorтеперь возникает, если новое ограничение слишком мало на текущей глубине рекурсии.
-
sys.setswitchinterval(interval) -
Установите интервал переключения потоков интерпретатора (в секундах). Это значение с плавающей точкой определяет идеальную продолжительность «временных квантов», выделенных одновременно выполняемым потокам Python. Обратите внимание, что фактическое значение может быть выше, особенно если используются длительные внутренние функции или методы. Кроме того, какой поток будет запланирован в конце интервала, решает операционная система. У интерпретатора нет собственного планировщика.
Добавлена в версии 3.2.
-
sys.settrace(tracefunc) -
Установите функцию отслеживания системы, которая позволяет реализовать отладчик кода Python на Python. Функция специфична для потока; для поддержки отладки нескольких потоков отладчик должен зарегистрировать функцию отслеживания, используя
settrace()для каждого отлаживаемого потока или использоватьthreading.settrace().Функции отслеживания должны иметь три аргумента: frame, event и arg. frame — текущая кадр стека. event — строка:
'call','line','return','exception'или'opcode'. arg зависит от типа события.Функция отслеживания вызывается (с event установленным в
'call') всякий раз, когда вводится новый локальный контекст; она должна вернуть ссылку на локальную функцию отслеживания, которая будет использоваться для нового контекста, илиNone, если контекст не должен отслеживаться.Локальная функция отслеживания должна вернуть ссылку на себя или на другую функцию, которая затем будет использоваться в качестве локальной функции отслеживания для контекста.
Если в функции отслеживания произошла ошибка, она будет удалена, точно так же, как если бы был вызван
settrace(None).Примечание
Отслеживание отключено во время вызова функции отслеживания (например, функции, установленной
settrace()). Для рекурсивного отслеживания см.call_tracing().События имеют следующее значение:
-
'call' -
Вызвана функция (или другой блок кода). Вызывается глобальная функция отслеживания; arg —
None; возвращаемое значение определяет локальную функцию отслеживания. -
'line' -
Интерпретатор собирается выполнить новую строку кода или повторно выполнить условие цикла. Вызывается локальная функция отслеживания; arg —
None; возвращаемое значение определяет новую локальную функцию отслеживания. См.Objects/lnotab_notes.txtдля подробного объяснения работы. События по строкам могут быть отключены для кадра, установивf_trace_linesнаFalseв этом кадре. -
'return' -
Функция (или другой блок кода) собирается вернуть. Вызывается локальная функция отслеживания; arg — значение, которое будет возвращено, или
None, если событие вызвано возбуждением исключения. Возвращаемое значение функции отслеживания игнорируется. -
'exception' -
Произошло исключение. Вызывается локальная функция отслеживания; arg — кортеж
(exception, value, traceback); возвращаемое значение определяет новую локальную функцию отслеживания. -
'opcode' -
Интерпретатор собирается выполнить новый оператор кода (см.
disдля получения подробностей об операторах). Вызывается локальная функция отслеживания; arg —None; возвращаемое значение определяет новую локальную функцию отслеживания. События по операторам кода по умолчанию не генерируются: их необходимо явно запросить, установивf_trace_opcodesнаTrueв кадре.
Обратите внимание, что по мере распространения исключения по цепочке вызывающих функций генерируется событие
'exception'на каждом уровне.Для более тонкой настройки можно установить функцию отслеживания, явно присвоив
frame.f_trace = tracefunc, а не полагаясь на то, что она установлена косвенно через возвращаемое значение уже установленной функции отслеживания. Это также необходимо для активации функции отслеживания в текущем кадре, чегоsettrace()не делает. Обратите внимание, что для работы в этом случае должна быть установлена глобальная функция отслеживания с помощьюsettrace()для включения механизма отслеживания во время выполнения, но она не обязательно должна быть той же самой функцией отслеживания (например, это может быть функция отслеживания с низкой нагрузкой, которая просто возвращаетNone, чтобы сразу же отключить себя в каждом кадре).Дополнительную информацию об объектах кода и кадрах см. в Иерархии стандартных типов.
Вызывает событие отладки
sys.settraceбез аргументов.Деталь реализации CPython: Функция
settrace()предназначена только для реализации отладчиков, профилировщиков, инструментов покрытия и т. п. Ее поведение является частью платформы реализации, а не частью определения языка, поэтому она может быть недоступна во всех реализациях Python.Изменено в версии 3.7: Добавлен тип события
'opcode'; добавлены атрибутыf_trace_linesиf_trace_opcodesк кадрамИзменено в версии 3.12: событие
'opcode'будет генерироваться только еслиf_trace_opcodesхотя бы одного кадра был установлен вTrueдо вызоваsettrace(). Это поведение будет изменено обратно в 3.13 для соответствия предыдущим версиям. -
-
sys.set_asyncgen_hooks([firstiter] [, finalizer]) -
Принимает два необязательных ключевых аргумента, которые являются вызовами, принимающими итератор асинхронного генератора в качестве аргумента. Вызов firstiter будет вызван, когда асинхронный генератор будет итерироваться в первый раз. finalizer будет вызван, когда асинхронный генератор собирается быть удалён из памяти.
Вызывает событие отладки
sys.set_asyncgen_hooks_firstiterбез аргументов.Вызывает событие отладки
sys.set_asyncgen_hooks_finalizerбез аргументов.Два события отладки вызываются, потому что базовая API состоит из двух вызовов, каждый из которых должен вызвать собственное событие.
Добавлен в версии 3.6: См. PEP 525 для получения более подробной информации, и для примера ссылки на метод finalizer см. реализацию
asyncio.Loop.shutdown_asyncgensв Lib/asyncio/base_events.pyПримечание
Эта функция была добавлена на временной основе (см. PEP 411 для подробностей.)
-
sys.set_coroutine_origin_tracking_depth(depth) -
Позволяет включить или отключить отслеживание происхождения корутин. При включении атрибут
cr_originобъектов корутин будет содержать кортеж кортежей (имя файла, номер строки, имя функции), описывающих стек вызовов, где был создан объект корутины, с последним вызовом в первую очередь. При отключенииcr_originбудетNone.Для включения передайте значение depth, большее нуля; это установит количество кадров, информация о которых будет сохранена. Для отключения установите depth в ноль.
Эта настройка специфична для потока.
Добавлен в версии 3.7.
Примечание
Эта функция была добавлена на временной основе (см. PEP 411 для подробностей.) Используйте ее только для целей отладки.
-
sys.activate_stack_trampoline(backend, /) -
Активирует трамплин профилирования стека backend. Единственный поддерживаемый backend —
"perf".Доступность: Linux.
Добавлен в версии 3.12.
-
sys.deactivate_stack_trampoline() -
Деактивировать текущий бэкэнд трамплина профайлера стека.
Если профайлер стека не активирован, эта функция не оказывает никакого эффекта.
Доступность: Linux.
Добавлена в версии 3.12.
-
sys.is_stack_trampoline_active() -
Возвращает
True, если трамплин профайлера стека активен.Доступность: Linux.
Добавлена в версии 3.12.
-
sys._enablelegacywindowsfsencoding() -
Изменяет кодировку и обработчик ошибок файловой системы на ‘mbcs’ и ‘replace’ соответственно для согласованности с версиями Python до 3.6.
Это эквивалентно определению переменной среды
PYTHONLEGACYWINDOWSFSENCODINGперед запуском Python.См. также
sys.getfilesystemencoding()иsys.getfilesystemencodeerrors().Доступность: Windows.
Добавлена в версии 3.6: См. PEP 529 для получения дополнительной информации.
-
sys.stdin -
sys.stdout -
sys.stderr -
Объекты файлов, используемые интерпретатором для стандартного ввода, вывода и ошибок:
-
stdinиспользуется для всех интерактивных вводов (включая вызовыinput()); -
stdoutиспользуется для выводаprint()и операторов выражения и для запросовinput(); - Собственные запросы интерпретатора и сообщения об ошибках выводятся в
stderr.
Эти потоки являются обычными текстовыми файлами, подобными тем, которые возвращает функция
open(). Их параметры выбираются следующим образом:-
Кодировка и обработка ошибок инициализируются из
PyConfig.stdio_encodingиPyConfig.stdio_errors.В Windows для устройства консоли используется UTF-8. Для устройств, не являющихся устройствами символов (например, файлы дисков и каналы), используется кодировка локальной системы (т. е. кодовая страница ANSI). Для устройств символов, не являющихся консольными (например, NUL (т. е. где
isatty()возвращаетTrue)), используются значения кодовых страниц консольного ввода и вывода при запуске соответственно для stdin и stdout/stderr. По умолчанию это кодировка системной локальной кодировки, если процесс изначально не подключён к консоли.Специальное поведение консоли может быть переопределено путём установки переменной окружения PYTHONLEGACYWINDOWSSTDIO перед запуском Python. В этом случае используются кодовые страницы консоли, как и для любого другого устройства символов.
На всех платформах вы можете переопределить кодировку символов, установив переменную среды
PYTHONIOENCODINGперед запуском Python или с помощью новой опции командной строки-Xutf8и переменной средыPYTHONUTF8. Однако для консоли Windows это применяется только при условии, что также установленаPYTHONLEGACYWINDOWSSTDIO. - В интерактивном режиме поток
stdoutявляется построчно буферизованным. В противном случае он является блочно буферизованным, как и обычные текстовые файлы. Потокstderrявляется построчно буферизованным в обоих случаях. Вы можете сделать оба потока небуферизованными, передав опцию командной строки-uили установив переменную средыPYTHONUNBUFFERED.
Изменено в версии 3.9: Неинтерактивный поток
stderrтеперь построчно буферизован, а не полностью буферизован.Примечание
Для записи или чтения двоичных данных из/в стандартные потоки используйте базовый двоичный
bufferобъект. Например, чтобы записать байты вstdout, используйтеsys.stdout.buffer.write(b'abc').Однако, если вы пишете библиотеку (и не контролируете, в каком контексте будет выполняться её код), помните, что стандартные потоки могут быть заменены объектами, подобными файлам, такими как
io.StringIO, которые не поддерживают атрибутbuffer. -
-
sys.__stdin__ -
sys.__stdout__ -
sys.__stderr__ -
Эти объекты содержат исходные значения
stdin,stderrиstdoutв начале программы. Они используются во время завершения работы и могут быть полезны для вывода в фактические стандартные потоки независимо от того, был ли перенаправлен объектsys.std*.Также их можно использовать для восстановления фактических файлов до известных рабочих файловых объектов в случае их перезаписи некорректным объектом. Однако предпочтительный способ сделать это — явно сохранить предыдущий поток перед его заменой и восстановить сохранённый объект.
Примечание
В некоторых условиях
stdin,stdoutиstderr, а также исходные значения__stdin__,__stdout__и__stderr__могут бытьNone. Это обычно происходит для приложений Windows GUI, которые не подключены к консоли, и приложений Python, запущенных с помощью pythonw.
-
sys.stdlib_module_names -
Замороженный набор строк, содержащих имена модулей стандартной библиотеки.
Он одинаков на всех платформах. Также перечислены модули, недоступные на некоторых платформах, и модули, отключённые при построении Python. Перечислены все типы модулей: чистые Python, встроенные, замороженные и расширенные модули. Модули тестов исключены.
Для пакетов перечисляется только основной пакет: подпакеты и подмодули не перечисляются. Например, пакет
emailперечислен, но подпакетemail.mimeи подмодульemail.messageне перечислены.См. также список
sys.builtin_module_names.Добавлена в версии 3.10.
-
sys.thread_info -
Именованная кортеж, содержащая информацию об реализации потоков.
-
thread_info.name -
Имя реализации потоков:
-
"nt": потоки Windows -
"pthread": потоки POSIX -
"pthread-stubs": заглушка потоков POSIX (на платформах WebAssembly без поддержки многопоточности) -
"solaris": потоки Solaris
-
-
thread_info.lock -
Имя реализации блокировки:
-
"semaphore": блокировка использует семафор -
"mutex+cond": блокировка использует мьютекс и переменную состояния -
Noneесли эта информация неизвестна
-
-
thread_info.version -
Имя и версия библиотеки потоков. Это строка или
None, если эта информация неизвестна.
Добавлена в версии 3.3.
-
-
sys.tracebacklimit -
При установке этой переменной в целое значение определяется максимальное количество уровней информации отладки, отображаемой при возникновении необработанного исключения. По умолчанию значение равно
1000. При установке значения0или меньше, вся информация отладки подавляется, и выводятся только тип и значение исключения.
-
sys.unraisablehook(unraisable, /) -
Обработка необрабатываемого исключения.
Вызывается, когда произошло исключение, но Python не может его обработать. Например, когда деструктор вызывает исключение или во время сбора мусора (
gc.collect()).Аргумент unraisable имеет следующие атрибуты:
-
exc_type: Тип исключения. -
exc_value: Значение исключения, может бытьNone. -
exc_traceback: Трассировка стека исключения, может бытьNone. -
err_msg: Сообщение об ошибке, может бытьNone. -
object: Объект, вызвавший исключение, может бытьNone.
По умолчанию обработчик форматирует
err_msgиobjectкак:f'{err_msg}: {object!r}'; используйте сообщение об ошибке "Исключение проигнорировано в" еслиerr_msgравноNone.sys.unraisablehook()может быть переопределен для управления обработкой необрабатываемых исключений.См. также
excepthook(), который обрабатывает неперехваченные исключения.Предупреждение
Хранение
exc_valueс помощью пользовательского обработчика может создать цикл зависимостей. Он должен быть явно очищен, чтобы разорвать цикл зависимостей, когда исключение больше не нужно.Хранение
objectс помощью пользовательского обработчика может воскресить его, если оно установлено на объект, который завершается. Избегайте храненияobjectпосле завершения пользовательского обработчика, чтобы избежать воскрешения объектов.Поднять событие аудита
sys.unraisablehookс аргументами hook, unraisable, когда возникает исключение, которое не может быть обработано. Объект unraisable — такой же, как будет передан обработчику. Если обработчик не установлен, hook может бытьNone.Добавлена в версии 3.8.
-
-
sys.version -
Строка, содержащая номер версии интерпретатора Python плюс дополнительную информацию о номере сборки и используемом компиляторе. Эта строка отображается при запуске интерактивного интерпретатора. Не извлекайте информацию о версии из неё, используйте
version_infoи функции модуляplatform.
-
sys.api_version -
Версия C API для этой интерпретатора. Программистам это может быть полезно при отладке конфликтов версий между Python и модулями расширений.
-
sys.version_info -
Кортеж, содержащий пять компонентов номера версии: major, minor, micro, releaselevel и serial. Все значения, кроме releaselevel, являются целыми числами; уровень выпуска —
'alpha','beta','candidate'или'final'. Значениеversion_info, соответствующее версии Python 2.0, равно(2, 0, 0, 'final', 0). Компоненты также могут быть доступны по имени, поэтомуsys.version_info[0]эквивалентноsys.version_info.majorи так далее.Изменено в версии 3.1: Добавлены атрибуты компонентов по имени.
-
sys.warnoptions -
Это реализационная деталь механизма предупреждений; не изменяйте это значение. Обратитесь к модулю
warningsдля получения дополнительной информации о механизме предупреждений.
-
sys.winver -
Номер версии, используемый для формирования ключей реестра на платформах Windows. Он хранится как строковый ресурс 1000 в DLL Python. Значение обычно представляет собой главную и второстепенную версии работающего интерпретатора Python. Он предоставляется в модуле
sysдля информационных целей; изменение этого значения не влияет на ключи реестра, используемые Python.Доступность: Windows.
- sys.monitoring
-
Пространство имен, содержащее функции и константы для регистрации обратных вызовов и управления событиями мониторинга. Подробности см. в
sys.monitoring.
-
sys._xoptions -
Словарь различных флагов, специфичных для реализации, переданных через параметр командной строки
-X. Имена опций либо сопоставляются со своими значениями, если они заданы явно, либо со значениемTrue. Пример:$ ./python -Xa=b -Xc Python 3.2a3+ (py3k, Oct 16 2010, 20:14:50) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys._xoptions {'a': 'b', 'c': True}Деталь реализации CPython: Это специфичный для CPython способ доступа к опциям, переданным через
-X. Другие реализации могут экспортировать их другими способами или вообще не экспортировать.Добавлена в версии 3.2.
Список литературы
ISO/IEC 9899:1999. “Языки программирования – C”. Публичный черновик этого стандарта доступен по адресу https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf.
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/library/sys.html