sys — Параметры и функции, специфичные для системы


Модуль предоставляет доступ к некоторым переменным, используемым или поддерживаемым интерпретатором, а также к функциям, которые тесно взаимодействуют с интерпретатором. Всегда в наличии.

sys.abiflags

В системах POSIX, где Python был построен со стандартным сценарием configure, он содержит флаги ABI, как указано в PEP 3149.

Изменено в версии 3.8: Флаги по умолчанию превратились в пустую строку (флаг m для pymalloc был удалён).

Добавлено в версии 3.2.

sys.addaudithook(hook)

Добавить вызываемый hook в список активных обработчиков аудита для текущего интерпретатора.

Когда событие аудита инициируется функцией sys.audit(), каждый хук будет вызываться в том порядке, в котором он был добавлен с именем события и кортежем аргументов. Первыми вызываются собственные хуки, добавленные PySys_AddAuditHook(), а затем хуки, добавленные в текущем интерпретаторе. Затем хуки могут регистрировать событие, вызывать исключение для прерывания операции или полностью завершать процесс.

Вызов 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.

Примечание

В 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().

Собственный эквивалент этой функции — 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.call_tracing(func, args)

Вызвать func(*args), пока трассировка включена. Состояние трассировки сохраняется и впоследствии восстанавливается. Предназначена для вызова из отладчика из контрольной точки для рекурсивной отладки некоторого другого кода.

sys.copyright

Строка, содержащая авторские права, относящиеся к интерпретатору Python.

sys._clear_type_cache()

Очистить кэш внутреннего типа. Кэш типов используется для ускорения поиска атрибутов и методов. Используйте функцию только для удаления ненужных ссылок во время отладки утечки ссылок.

Функция должна использоваться только для внутренних и специальных целей.

sys._current_frames()

Возвращает словарь, сопоставляющий идентификатор каждого потока с самым верхним фреймом стека, активным в данный момент в этом потоке во время вызова функции. Обратите внимание, что функции в модуле traceback могут создавать стек вызовов с учётом такого фрейма.

Наиболее полезно для отладки тупиковой (deadlock) ситуации: функция не требует взаимодействия тупиковых потоков, и стеки вызовов таких потоков замораживаются до тех пор, пока они остаются в тупиковой ситуации. Возвращенный фрейм для потока без тупика, может не относиться к текущей активности этого потока к моменту, когда код вызова проверяет фрейм.

Функция должна использоваться только для внутренних и специальных целей.

Поднимает событие аудита sys._current_frames без аргументов.

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 настроен –with-pydebug, он также выполняет некоторые дорогостоящие проверки внутренней согласованности.

Добавлено в версии 3.3.

Детали реализации CPython: Функция специфична для CPython. Точный формат вывода здесь не определён и может измениться.

sys.dllhandle

Целое число, указывающее дескриптор DLL библиотеки Python.

Доступность: Windows.

sys.displayhook(value)

Если value не None, функция печатает repr(value) в sys.stdout и сохраняет value в 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
    # Установить '_' в None, чтобы избежать рекурсии
    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.pycache_prefix

Если установлено (не None), Python будет записывать файлы .pyc из кэша байт-кода в (и читать их) в параллельном дереве каталогов с корнем в этом каталоге, а не из каталогов __pycache__ в дереве исходного кода. Любые каталоги __pycache__ в дереве исходного кода будут игнорироваться, и новые файлы .pyc будут записаны с префиксом pycache. Таким образом, если вы используете compileall в качестве шага перед сборкой, вы должны убедиться, что вы запускаете его с тем же префиксом pycache (если есть), который вы будете использовать во время выполнения.

Относительный путь интерпретируется относительно текущего рабочего каталога.

Значение изначально устанавливается на основе значения параметра командной строки -X pycache_prefix=PATH или переменной среды PYTHONPYCACHEPREFIX (командная строка приоритетнее). Если ни один из них не установлен, то None.

Добавлено в версии 3.8.

sys.excepthook(type, value, traceback)

Функция распечатывает заданную трассировку и исключение для sys.stderr.

Когда возникает и не перехватывается исключение, интерпретатор вызывает sys.excepthook с тремя аргументами: классом исключения, экземпляром исключения и объектом трассировки. В интерактивном сеансе происходит непосредственно перед возвратом управления командной строке; в программе Python происходит непосредственно перед выходом из программы. Обработку таких исключений верхнего уровня можно настроить, назначив sys.excepthook другую функцию с тремя аргументами.

Вызов события аудита sys.excepthook с аргументами hook, type, value, traceback при возникновении неперехваченного исключения. Если хук не установлен, hook может быть None. Если какой-либо хук вызывает исключение, производный от RuntimeError, вызов хука будет подавлен. В противном случае исключение перехвата аудита будет сообщено как невыполненное, и будет вызван sys.excepthook.

См.также

Функция sys.unraisablehook() обрабатывает нераскрытые (unraisable) исключения, а функция 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.exc_info()

Функция возвращает кортеж из трёх значений, которые предоставляют информацию об исключении, которое в настоящее время обрабатывается. Возвращаемая информация относится как к текущему потоку, так и к текущему фрейму стека. Если текущий фрейм стека не обрабатывает исключение, информация берётся из вызывающего фрейма стека или его вызывающего объекта и так далее, пока не будет найден фрейм стека, обрабатывающий исключение. Здесь «обработка исключения» определяется как «выполнение предложение except». Для любого фрейма стека доступна только информация об обрабатываемом в данный момент исключении.

Если нигде в стеке не обрабатывается исключение, возвращается кортеж, содержащий три значения None. В противном случае возвращаются значения (type, value, traceback). Их значение таково: type получает тип обрабатываемого исключения (подкласс BaseException); value получает экземпляр исключения (экземпляр типа исключения); traceback получает объект трассировки, который инкапсулирует стек вызовов в точке, где изначально возникло исключение.

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.

Примечание

Если действует виртуальная среда, значение будет изменено в site.py, чтобы указать на виртуальную среду. Значение для установки Python по-прежнему будет доступно через base_exec_prefix.

sys.executable

Строка, указывающая абсолютный путь к исполняемому двоичному файлу для интерпретатора Python в системах, где это имеет смысл. Если Python не может получить реальный путь к своему исполняемому файлу, sys.executable будет пустой строкой или None.

sys.exit([arg])

Выход из Python. Реализуется путём вызова исключения SystemExit, поэтому выполняются действия по очистке, указанные в предложениях finally в операторах try, и есть возможность перехватить попытку выхода на внешнем уровне.

Необязательный аргумент arg может являться целым числом, предоставляющий статус выхода (по умолчанию — ноль), или другим типом объекта. Если целое число, ноль считается «успешным завершением», а любое ненулевое значение считается «аварийным завершением» оболочками и т. п. Большинство систем требует, чтобы он находился в диапазоне от 0 до 127, и в противном случае выдает неопределенные результаты. У некоторых систем есть соглашение о присвоении определенных значений конкретным кодам выхода, но они, как правило, недостаточно развиты; программы Unix обычно используют 2 для синтаксических ошибок командной строки и 1 для всех других ошибок. Если передается другой тип объекта, None эквивалентен передаче нуля, а любой другой объект печатается в stderr и отдает код выхода 1. В частности, sys.exit("some error message") — быстрый способ выйти из программы при возникновении ошибки.

Поскольку exit() в конечном итоге «только» вызывает исключение, она выйдет из процесса только при вызове из основного потока, и исключение не будет перехвачено.

Изменено в версии 3.6: Если ошибка возникает при очистке после того, как интерпретатор Python перехватил SystemExit (например, ошибка сброса буферизованных данных в стандартных потоках), статус выхода изменяется на 120.

sys.flags

Именованный кортеж flags отображает состояние флагов командной строки. Атрибуты доступны только для чтения.

атрибут флаг
debug -d
inspect -i
interactive -i
isolated -I
optimize -O или -OO
dont_write_bytecode -B
no_user_site -s
no_site -S
ignore_environment -E
verbose -v
bytes_warning -b
quiet -q
hash_randomization -R
dev_mode -X dev
utf8_mode -X utf8

Изменено в версии 3.2: Добавлен атрибут quiet для нового флага -q.

Добавлено в версии 3.2.3: Атрибут hash_randomization.

Изменено в версии 3.3: Удален устаревший атрибут division_warning.

Изменено в версии 3.4: Добавлен атрибут isolated для флага -I isolated.

Изменено в версии 3.7: Добавлен атрибут dev_mode для нового флага -X dev и атрибут utf8_mode для нового флага -X utf8.

sys.float_info

Именованный кортеж, содержащий информацию о типе float. Он содержит низкоуровневую информацию о точности и внутреннем представлении. Значения соответствуют различным константам с плавающей запятой, определенным в стандартном файле заголовка float.h для языка программирования «C»; подробности см. в разделе 5.2.4.2.2 стандарта ISO/IEC C [C99] 1999 г. «Характеристики плавающих типов».

атрибут float.h макрос объяснение
epsilon DBL_EPSILON разница между 1.0 и наименьшим значением больше 1.0, который представляется в виде float числа
dig DBL_DIG максимальное количество десятичных цифр, которые могут быть точно представлены в float; см. ниже
mant_dig DBL_MANT_DIG точность float: число базовых цифр radix в значении и значении с плавающей точкой
max DBL_MAX максимальная представляемая положительная конечная float
max_exp DBL_MAX_EXP максимальное целое число e так что radix**(e-1) является представимым конечным float
max_10_exp DBL_MAX_10_EXP максимальное целое число e так что 10**e находится в диапазоне представимых конечных плавающих чисел
min DBL_MIN минимальный представляемый положительный нормализованный float
min_exp DBL_MIN_EXP минимальное целое число e, так что radix**(e-1) является нормализованным float
min_10_exp DBL_MIN_10_EXP минимальное целое число e, так что 10**e является нормализованным float
radix FLT_RADIX радикс (radix) представления экспоненты
rounds FLT_ROUNDS целочисленная константа, представляющая режим округления, используемый для арифметических операций. Отражает значение системы FLT_ROUNDS макроса во время запуска интерпретатора. См. раздел 5.2.4.2.2 стандарта C99 для объяснения возможных значений и их смыслов.

Атрибут sys.float_info.dig требует дальнейшего пояснения. Если s — любая строка, представляющая десятичное число с не более чем sys.float_info.dig значащими цифрами, то преобразование s в число с плавающей запятой и обратно восстановит строку, представляющую то же десятичное значение:

>>> import sys
>>> sys.float_info.dig
15
>>> s = '3.14159265358979'    # десятичная строка с 15 значащими цифрами
>>> format(float(s), '.15g')  # конвертировать в float и обратно -> то же значение
'3.14159265358979'

Но для строк, содержащих более sys.float_info.dig значащих цифр, это не всегда верно:

>>> s = '9876543211234567'    # 16 значащих цифр - это слишком много!
>>> format(float(s), '.16g')  # конверсия меняет значение
'9876543211234568'
sys.float_repr_style

Строка, указывающая, как функция repr() ведёт себя для чисел с плавающей запятой. Если у строки значение 'short', то для конечного числа с плавающей запятой x 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.getandroidapilevel()

Возвращает версию API времени сборки Android в виде целого числа.

Доступность: Android.

Добавлено в версии 3.7.

sys.getcheckinterval()

Возвращает «интервал проверки» интерпретатора; см. setcheckinterval().

Не рекомендуется, начиная с версии 3.2: Вместо этого использовать getswitchinterval().

sys.getdefaultencoding()

Возвращает имя текущей кодировки строки по умолчанию, используемой Юникод реализацией.

sys.getdlopenflags()

Возвращает текущее значение флагов, которые используются для вызовов dlopen(). Символические имена для значений флагов можно найти в модуле os (константы RTLD_xxx, например, os.RTLD_LAZY).

Доступность: Unix.

sys.getfilesystemencoding()

Возвращает имя кодировки, используемой для преобразования между Юникод именами файлов и байтами имён файлов. Для лучшей совместимости во всех случаях следует использовать str для имён файлов, хотя представление имён файлов в байтах также поддерживается. Функции, принимающие или возвращающие имена файлов, должны поддерживать либо str, либо байты и внутренне преобразовывать в предпочтительное представление системы.

Кодировка всегда совместима с ASCII.

os.fsencode() и os.fsdecode() следует использовать для обеспечения правильного кодирования и режима ошибок.

  • В режиме UTF-8 кодировка utf-8 на любой платформе.
  • В macOS кодировка — 'utf-8'.
  • В Unix кодировка — кодировка локали.
  • В Windows кодировка может быть 'utf-8' или 'mbcs', в зависимости от конфигурации пользователя.
  • В Android используется кодировка 'utf-8'.
  • В VxWorks кодировка — 'utf-8'.

Изменено в версии 3.2: Результат getfilesystemencoding() больше не может быть None.

Изменено в версии 3.6: Windows больше не гарантирует возврат 'mbcs'. См. PEP 529 и _enablelegacywindowsfsencoding() для получения дополнительной информации.

Изменено в версии 3.7: Возвращает utf-8 в режиме UTF-8.

sys.getfilesystemencodeerrors()

Возвращает имя режима ошибки, используемого для преобразования между именами файлов в формате Юникод и байтовыми именами файлов. Имя кодировки возвращается из getfilesystemencoding().

os.fsencode() и os.fsdecode() следует использовать для обеспечения правильного кодирования и режима ошибок.

Добавлено в версии 3.6.

sys.getrefcount(object)

Возвращает счетчик ссылок на object. Возвращаемое количество обычно на единицу больше, чем вы могли ожидать, потому что оно включает (временную) ссылку в качестве аргумента для getrefcount().

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 без аргументов.

Детали реализации 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 — тройку, а все остальные значения являются целыми числами. Доступ к компонентам также можно получить по имени, поэтому 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 возвращает точную основную версию, вспомогательную версию и номер сборки текущей ОС, а не версию, которая эмулируется для процесса. Он предназначен для использования при логгировании, а не для обнаружения функций.

Доступность: 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

Именованный кортеж, задающий параметры реализации числового хэша. Дополнительные сведения о хешировании числовых типов см. в Хеширование числовых типов.

атрибут объяснение
width ширина в битах, используемая для хеш- значений
modulus простой модуль P, используемый для числовой хэш-схемы
inf значение хеша возвращается для положительной бесконечности
nan хэш-значение возвращаемое для nan
imag множитель используемый для мнимой части комплексного числа
algorithm имя алгоритма хеширования str, байта и memoryview
hash_bits внутренний выходной размер хэш-алгоритма
seed_bits размер начального ключа алгоритма хеширования

Добавлено в версии 3.2.

Изменено в версии 3.4: Добавлены algorithm, hash_bits и seed_bits

sys.hexversion

Номер версии, закодированный как одно целое число. Гарантированно увеличивается с каждой версией, включая надлежащую поддержку непроизводственных выпусков. Например, чтобы проверить, что у интерпретатора Python версия не ниже 1.5.2, используйте:

if sys.hexversion >= 0x010502F0:
    # используйте некоторые расширенные функции
    ...
else:
    # используйте альтернативную реализацию или предупредите пользователя
    ...

Называется 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.8 sys.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

Именованный кортеж, содержащий информацию о внутреннем представлении целых чисел в Python. Атрибуты доступны только для чтения.

Атрибут Объяснение
bits_per_digit количество битов, содержащихся в каждой цифре. В Python целые числа хранятся внутри по основанию 2**int_info.bits_per_digit
sizeof_digit размер в байтах типа C, используемый для представления цифры

Добавлено в версии 3.1.

sys.__interactivehook__

Когда этот атрибут существует, его значение вызывается автоматически (без аргументов) при запуске интерпретатора в интерактивном режиме. Это делается после чтения файла PYTHONSTARTUP, так что вы можете установить этот хук там. Модуль site устанавливает его.

Вызывает событие аудита cpython.run_interactivehook с объектом хуки в качестве аргумента, когда хук вызывается при запуске.

Добавлено в версии 3.4.

sys.intern(string)

Ввести string в таблицу «интернированных» строк и вернуть интернированную строку, которая является самой string или его копией. Интернирование строк полезно для получения небольшой производительности при поиске по словарю — если ключи в словаре интернированы, а ключ поиска интернирован, сравнение ключей (после хеширования) может выполняться путём сравнения указателя вместо сравнения строк. Обычно имена, используемые в программах Python, автоматически интернируются, а словари, используемые для хранения атрибутов модуля, класса или экземпляра, содержат интернированные ключи.

Интернированные строки не бессмертны; вы должны держать ссылку на возвращаемое значение intern(), чтобы извлечь из них пользу.

sys.is_finalizing()

Возвращает True, если интерпретатор Python — отключён, в противном случае — False.

Добавлено в версии 3.5.

sys.last_type
sys.last_value
sys.last_traceback

Три переменные не всегда определены; они устанавливаются, когда исключение не обрабатывается и интерпретатор печатает сообщение об ошибке и трассировку стека. Их предполагаемое использование — позволить интерактивному пользователю импортировать модуль отладчика и участвовать в посмертной отладке без повторного выполнения команды, вызвавшей ошибку. (Обычно используется import pdb; pdb.pm() для входа в посмертный отладчик; дополнительную информацию см. в модуле pdb.)

Значение переменных такое же, как и у возвращаемых значений из 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(), чтобы узнать, может ли один из объектов найти модуль для импорта. Метод find_spec() вызывается по крайней мере с абсолютным именем импортируемого модуля. Если импортируемый модуль содержится в пакете, то атрибут __path__ родительского пакета передается в качестве второго аргумента. Метод возвращает спецификацию модуля или None, если модуль не может быть найден.

См.также

importlib.abc.MetaPathFinder
Абстрактный базовый класс, определяющий интерфейс объектов поиска на meta_path.
importlib.machinery.ModuleSpec
Конкретный класс, find_spec() должен возвращать его экземпляры.

Изменено в версии 3.4: Спецификации модуля были введены в Python 3.4 PEP 451. Более ранние версии Python искали метод под названием find_module(). По-прежнему называется резервным вариантом, если запись meta_path не содержит метода find_spec().

sys.modules

Словарь, сопоставляющий имена модулей с уже загруженными модулями. Им можно манипулировать для принудительной перезагрузки модулей и других уловок. Однако замена словаря не обязательно будет работать должным образом, а удаление важных элементов из словаря может привести к сбою Python.

sys.path

Список строк, указывающих путь поиска модулей. Инициализируется переменной среды PYTHONPATH, а также значением по умолчанию, зависящим от установки.

После инициализации при запуске программы первый элемент этого списка path[0], представляет собой каталог, содержащий сценарий, который использовался для вызова интерпретатора Python. Если каталог сценария недоступен (например, если интерпретатор вызывается в интерактивном режиме или если сценарий читается со стандартного ввода), path[0] — пустая строка, которая направляет Python на поиск модулей в текущем каталоге в первую очередь. Обратите внимание, что каталог сценария вставлен перед записями, вставленными в результате PYTHONPATH.

Программа может изменять этот список в своих целях. В sys.path следует добавлять только строки и байты; все другие типы данных игнорируются во время импорта.

См.также

Модуль site Здесь описывается, как использовать файлы .pth для расширения sys.path.

sys.path_hooks

Список вызываемых объектов, которые принимают аргумент пути, чтобы попытаться создать поисковик для пути. Если поисковик может быть создан, он должен быть возвращён вызываемым объектом, иначе вызовет ImportError.

Первоначально указано в PEP 302.

sys.path_importer_cache

Словарь, действующий как кеш для объектов поисковика. Ключи — пути, которые были переданы sys.path_hooks, а значения — найденные средства поиска. Если путь является допустимым путём файловой системы, но поисковик не найден в sys.path_hooks, то сохраняется None.

Первоначально указано в PEP 302.

Изменено в версии 3.3: None сохраняется вместо imp.NullImporter, когда поисковик не найден.

sys.platform

Строка, содержащая идентификатор платформы, который можно использовать, например, для добавления компонентов, зависящих от платформы, в sys.path.

Для систем Unix, за исключением Linux и AIX, это имя ОС в нижнем регистре, возвращаемое uname -s с добавлением первой части версии, возвращаемой uname -r, например 'sunos5' или 'freebsd8', в то время, когда был построен Python. Если вы не хотите проверять конкретную версию системы, рекомендуется использовать следующую идиому:

if sys.platform.startswith('freebsd'):
    # Специфичный для FreeBSD код здесь ...
elif sys.platform.startswith('linux'):
    # Linux-специфичный код здесь ...
elif sys.platform.startswith('aix'):
    # AIX-специфичный код здесь ...

Для других систем значения равны:

Система platform значение
AIX 'aix'
Linux 'linux'
Windows 'win32'
Windows/Cygwin 'cygwin'
macOS 'darwin'

Изменено в версии 3.3: В Linux sys.platform больше не содержит основную версию. Это всегда 'linux', а не 'linux2' или 'linux3'. Поскольку более старые версии Python включают номер версии, рекомендуется всегда использовать идиому startswith, представленную выше.

Изменено в версии 3.8: В AIX sys.platform больше не содержит основную версию. Это всегда 'aix', а не 'aix5' или 'aix7'. Поскольку более старые версии Python включают номер версии, рекомендуется всегда использовать идиому startswith, представленную выше.

См.также

У os.name более грубая зернистость. os.uname() предоставляет информацию о версии, зависящей от системы.

Модуль platform предоставляет детальную проверку идентичности системы.

sys.prefix

Строка, указывающая префикс каталога для конкретного сайта, в котором установлены независимые от платформы файлы Python; по умолчанию это строка '/usr/local'. Её можно установить во время сборки с помощью аргумента --prefix сценария configure. Основная коллекция модулей библиотеки Python устанавливается в каталог prefix/lib/pythonX.Y, в то время как независимые от платформы файлы заголовков (все, кроме pyconfig.h) хранятся в prefix/include/pythonX.Y, где X.Y — номер версии Python, например 3.2.

Примечание

Если действует виртуальная среда, это значение будет изменено в site.py, чтобы указывать на виртуальную среду. Значение для установки Python по-прежнему будет доступно через base_prefix.

sys.ps1
sys.ps2

Строки, определяющие первичное и вторичное приглашение интерпретатора. Они определяются только в том случае, если интерпретатор находится в интерактивном режиме. Их начальные значения в этом случае — '>>> ' и '... '. Если какой-либо переменной присваивается нестроковый объект, его str() вычисляется каждый раз, когда интерпретатор готовится прочитать новую интерактивную команду; используется для реализации динамической подсказки.

sys.setcheckinterval(interval)

Установить «интервал проверки» интерпретатора. Это целочисленное значение определяет, как часто интерпретатор проверяет периодические вещи, такие как переключатели потоков и обработчики сигналов. По умолчанию используется 100, что означает, что проверка выполняется каждые 100 виртуальных инструкций Python. Установка большего значения может повысить производительность программ, использующих потоки. Установка его на значение <= 0 проверяет каждую виртуальную инструкцию, максимизируя скорость отклика, а также накладные расходы.

Не рекомендуется, начиная с версии 3.2: Данная функция больше не действует, т. к. внутренняя логика переключения потоков и асинхронных задач была переписана. Вместо неё используйте setswitchinterval().

sys.setdlopenflags(n)

Установить флаги, используемые интерпретатором для вызовов dlopen(), например, когда интерпретатор загружает модули расширения. Среди прочего, позволит выполнять ленивое разрешение символов при импорте модуля, если он называется sys.setdlopenflags(0). Чтобы использовать символы в модулях расширения, вызывайте sys.setdlopenflags(os.RTLD_GLOBAL). Символические имена для значений флагов можно найти в модуле os (константы RTLD_xxx, например os.RTLD_LAZY).

Доступность: Unix.

sys.setprofile(profilefunc)

Установить функцию профилировщика системы, которая позволяет реализовать профилировщик исходного кода Python в Python. См. главу Профилировщики Python для получения дополнительной информации о профилировщике Python. Функция профилировщик системы вызывается аналогично системной функции trace (см. settrace()), но вызывается с разными событиями, например, она не вызывается для каждой выполненной строки кода (только при вызове и возврате, но событие возврата сообщается, даже если было установлено исключение). Функция зависит от потока, но профилировщик не может знать о переключениях контекста между потоками, поэтому нет смысла использовать её при наличии нескольких потоков. Кроме того, его возвращаемое значение не используется, поэтому она может просто вернуть None. Ошибка в функции профилировщика приведёт к самоотключению.

У функций профилировщика должны быть три аргумента: frame, event и arg. frame — текущий фрейм стека. event — строка: 'call', 'return', 'c_call', 'c_return' или 'c_exception'. arg зависит от типа события.

Поднимает событие аудита sys.setprofile без аргументов.

У событий следующее значения:

'call'
Вызывается функция (или вводится другой блок кода). Вызывается функция профилировщик; argNone.
'return'
Функция (или другой блок кода) вот-вот вернётся. Функция профилировщика вызывается; arg — значение, которое будет возвращено, или None если событие вызвано возникшим исключением.
'c_call'
Скоро будет вызвана C функция. Может быть функция расширения или встроенная. arg — объект функции C.
'c_return'
C функция вернулась. arg — объект функции C.
'c_exception'
Функция C вызвала исключение. arg — объект функции C.
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, если область не должна отслеживаться.

Функция локальной трассировки должна возвращать ссылку на себя (или на другую функцию для дальнейшей трассировки в этой области) или None, чтобы отключить трассировку в этой области.

Если в функции трассировки произошла какая-либо ошибка, она будет сброшена, как и при вызове settrace(None).

У событий могут быть следующее значения:

'call'
Вызывается функция (или вводится другой блок кода). Вызывается функция глобальной трассировки; argNone; возвращаемое значение определяет функцию локальной трассировки.
'line'
Интерпретатор собирается выполнить новую строку кода или повторно выполнить состояние цикла. Вызывается локальная функция трассировки; argNone; возвращаемое значение указывает новую функцию локальной трассировки. См. Objects/lnotab_notes.txt для подробного объяснения того, как это работает. Построчные события могут быть отключены для фрейма путём установки f_trace_linesFalse на данном фрейме.
'return'
Функция (или другой блок кода) вот-вот вернётся. Вызывается локальный трейс функция; arg — значение, которое будет возвращено или None, если событие вызвано возникшим исключением. Возвращаемое значение функции трассировки игнорируется.
'exception'
Произошло исключение. Вызывается локальная функция трассировки; arg — кортеж (exception, value, traceback); возвращаемое значение указывает новую функцию локальной трассировки.
'opcode'
Интерпретатор собирается выполнить новый код операции (opcode) (см. dis для подробностей кода операции). Вызывается локальная функция трассировки; argNone; возвращаемое значение указывает новую функцию локальной трассировки. События для каждого кода операции по умолчанию не генерируются: они должны быть явно запрашивается путём установки 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

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._enablelegacywindowsfsencoding()

Изменяет кодировку файловой системы и режим ошибок по умолчанию на «mbcs» и «replace» соответственно для согласованности с версиями Python до 3.6.

Эквивалентно определению переменной среды PYTHONLEGACYWINDOWSFSENCODING перед запуском Python.

Доступность: Windows.

Добавлено в версии 3.6: См. PEP 529 для получения более подробной информации.

sys.stdin
sys.stdout
sys.stderr

Файловые объекты используется интерпретатором для стандартного ввода, вывода и ошибок:

  • stdin используется для всего интерактивного ввода (включая вызовы на input());
  • stdout используется для вывода операторов print() и выражения и для подсказок input();
  • Собственные приглашения интерпретатора и его сообщения об ошибках поступают на stderr.

Это обычные потоки текстовых файлов, подобные потокам, возвращаемым функцией open(). Их параметры выбираются следующим образом:

  • Кодировка символов зависит от платформы. Платформы, отличные от Windows, используют кодировку локали (см. locale.getpreferredencoding()).

    В Windows для консольного устройства используется UTF-8. Несимвольные устройства, такие как дисковые файлы и каналы, используют кодировку языкового стандарта системы (т. е. кодовую страницу ANSI). Неконсольные символьные устройства, такие как NUL (т.е. где isatty() возвращает True), используют значение кодовых страниц ввода и вывода консоли при запуске, соответственно для stdin и stdout/stderr. По умолчанию используется кодировка языкового стандарта системы, если процесс изначально не подключен к консоли.

    Особое поведение консоли можно изменить, установив переменную среды PYTHONLEGACYWINDOWSSTDIO перед запуском Python. В этом случае кодовые страницы консоли используются, как и для любого другого символьного устройства.

    На всех платформах вы можете переопределить кодировку символов, установив переменную среды PYTHONIOENCODING перед запуском Python или используя новый параметр командной строки -X utf8 и переменную среды PYTHONUTF8. Однако для консоли Windows это применимо, только если также задано PYTHONLEGACYWINDOWSSTDIO.

  • В интерактивном режиме потоки stdout и stderr буферизируются по строкам. В противном случае они буферизируются по блокам, как обычные текстовые файлы. Вы можете изменить это значение с помощью параметра командной строки -u.

Примечание

Для записи или чтения двоичных данных из/в стандартных потоков используйте базовый двоичный объект 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.thread_info

Именованный кортеж, содержащий информацию о реализации потока.

Атрибут Объяснение
name

Имя реализации потока:

  • 'nt': Windows потоки
  • 'pthread': POSIX потоки
  • 'solaris': Solaris потоки
lock

Имя реализации блокировки:

  • 'semaphore': блокировка использует семафор
  • 'mutex+cond': блокировка использует мьютекс и переменная условия
  • None если эта информация неизвестна
version Имя и версия библиотеки thread. Строка или 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_msgNone.

sys.unraisablehook() можно переопределить, чтобы управлять обработкой невыполнимых исключений.

Сохранение exc_value с использованием настраиваемого обработчика может создать эталонный цикл. Его следует явно очистить, чтобы прервать ссылочный цикл, когда исключение больше не требуется.

Сохранение object с использованием настраиваемого хука может воскресить его, если он установлен на финализируемый объект. Избегайте сохранения object после завершения настраиваемого хука, чтобы избежать воскрешения объектов.

См. также excepthook(), который обрабатывает неперехваченные исключения.

Вызов события аудита 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. Обычно это первые три символа version. Он предоставляется в модуле sys в информационных целях; изменение этого значения не влияет на ключи реестра, используемые Python.

Доступность: Windows.

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.

Цитаты

[C99]ISO/IEC 9899:1999. «Языки программирования – C.» С публичным проектом настоящего стандарта можно ознакомиться по адресу.