Spec-Zone.ru › Python 3.6

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

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

sys.abiflags

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

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

sys.argv

Список аргументов командной строки, переданных скрипту Python. argv[0] — это имя скрипта (зависит от операционной системы, является ли это полным путем или нет). Если команда была выполнена с помощью опции командной строки -c интерпретатора, argv[0] установлено в строку '-c'. Если имя скрипта не было передано интерпретатору Python, argv[0] — это пустая строка.

Для обработки стандартного ввода или списка файлов, переданных в командной строке, см. модуль fileinput.

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 могут построить стек вызовов, заданный таким кадром.

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

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

sys._debugmallocstats()

Выводит информацию низкого уровня в stderr об состоянии выделения памяти в CPython.

Если Python настроен с –with-pydebug, он также выполняет некоторые дорогостоящие проверки внутренней согласованности.

Добавлена в версии 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

Если это True, Python не будет пытаться записать файлы .pyc при импорте исходных модулей. Это значение изначально устанавливается в True или False в зависимости от опции командной строки -B и переменной среды PYTHONDONTWRITEBYTECODE, но вы можете установить его самостоятельно для управления генерацией файлов байткода.

sys.excepthook(type, value, traceback)

Эта функция выводит указанный стек следов и исключение в sys.stderr.

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

sys.__displayhook__
sys.__excepthook__

Эти объекты содержат исходные значения displayhook и excepthook в начале программы. Они сохраняются, чтобы displayhook и excepthook могли быть восстановлены в случае, если они случайно заменены повреждёнными объектами.

sys.exc_info()

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

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

END_OF_DOCUMENT_MARKER ```
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), или другим типом объекта. Если это целое число, 0 считается «успешным завершением», а любое ненулевое значение считается «ненормальным завершением» оболочками и т. п. Большинство систем требуют, чтобы оно находилось в диапазоне от 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

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

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

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

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

sys.float_info

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

атрибут

макрос float.h

объяснение

epsilon

DBL_EPSILON

разница между 1 и наименьшим значением, большим 1, которое может быть представлено как float

dig

DBL_DIG

максимальное количество десятичных цифр, которые могут быть надёжно представлены в float; см. ниже

mant_dig

DBL_MANT_DIG

точность float: количество цифр в основании radix в мантиссе float

max

DBL_MAX

максимальное конечное значение float

max_exp

DBL_MAX_EXP

максимальное целое число e такое, что radix**(e-1) — это конечное значение float

max_10_exp

DBL_MAX_10_EXP

максимальное целое число e такое, что 10**e находится в диапазоне конечных значений float

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

основание представления показателя степени

rounds

FLT_ROUNDS

целая константа, представляющая режим округления, используемый для арифметических операций. Это отражает значение системного макроса FLT_ROUNDS в момент запуска интерпретатора. См. раздел 5.2.4.2.2 стандарта C99 для объяснения возможных значений и их значений.

Атрибуту 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', то для конечного числа с плавающей точкой 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.getcheckinterval()

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

Устаревшая начиная с версии 3.2: Используйте getswitchinterval() вместо этого.

sys.getdefaultencoding()

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

sys.getdlopenflags()

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

sys.getfilesystemencoding()

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

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

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

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

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

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

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__ объекта и добавляет дополнительную нагрузку сборщика мусора, если объект управляется сборщиком мусора.

См. рецепты рекурсивного размера для примера использования getsizeof() рекурсивно для определения размера контейнеров и всех их содержимого.

sys.getswitchinterval()

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

Новое в версии 3.2.

sys._getframe([depth])

Возвращает объект фрейма из стека вызовов. Если дан целочисленный необязательный параметр depth, возвращается объект фрейма, находящийся на глубине depth ниже вершины стека. Если эта глубина превышает глубину стека вызовов, генерируется исключение ValueError. По умолчанию 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 возвращает точную основную версию, второстепенную версию и номер сборки текущей операционной системы, а не версию, которая эмулируется для процесса. Она предназначена для использования в журнале, а не для обнаружения функций.

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

Возвращает None, или обертку, установленную с помощью set_coroutine_wrapper().

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

Примечание

Эта функция добавлена на временной основе (см. PEP 411 для получения подробностей.) Используйте её только для отладки.

sys.hash_info

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

Атрибут

Описание

width

ширина в битах, используемая для значений хешей

modulus

простой модуль P, используемый для числовой схемы хеширования

inf

значение хеша, возвращаемое для положительной бесконечности

nan

значение хеша, возвращаемое для NaN

imag

множитель, используемый для мнимой части комплексного числа

algorithm

имя алгоритма для хеширования str, bytes и memoryview

hash_bits

внутренний размер вывода алгоритма хеширования

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.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.

sys.int_info

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

Атрибут

Описание

bits_per_digit

количество битов, содержащихся в каждом разряде. Целые числа Python хранятся во внутренней базе 2**int_info.bits_per_digit

sizeof_digit

размер в байтах типа C, используемого для представления разряда

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

sys.__interactivehook__

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

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

sys.intern(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, когда поисковик не найден.

END_OF_DOCUMENT_MARKER
sys.platform

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

Для Unix-систем, за исключением Linux, это строка с именем ОС в нижнем регистре, возвращаемая 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...

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

Система

platform значение

Linux

'linux'

Windows

'win32'

Windows/Cygwin

'cygwin'

Mac OS X

'darwin'

Изменено в версии 3.3: В Linux sys.platform больше не содержит номер основной версии. Она всегда равна 'linux', вместо 'linux2' или 'linux3'. Поскольку более старые версии 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. Функция профилирования системы вызывается аналогично системной функции отслеживания (см. settrace()), но вызывается с другими событиями, например, не вызывается для каждой выполняемой строки кода (только при вызове и возврате, но событие возврата отчитывается даже при возникновении исключения). Функция специфична для потока, но нет способа, чтобы профайлер знал о переключениях контекста между потоками, поэтому не имеет смысла использовать её при наличии нескольких потоков. Кроме того, её возвращаемое значение не используется, поэтому она может просто вернуть None.

Функции профилирования должны иметь три аргумента: 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.setrecursionlimit(limit)

Установите максимальную глубину стека интерпретатора Python на limit. Это ограничение предотвращает бесконечную рекурсию, вызывающую переполнение стека C и сбой Python.

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

Если новое ограничение слишком мало при текущей глубине рекурсии, возникает исключение RecursionError.

Изменено в версии 3.5.1: Теперь исключение RecursionError возникает, если новое ограничение слишком мало при текущей глубине рекурсии.

sys.setswitchinterval(interval)

Установите интервал переключения потоков интерпретатора (в секундах). Это значение с плавающей точкой определяет идеальную длительность «временных квантов», выделяемых для одновременной работы потоков Python. Обратите внимание, что фактическое значение может быть больше, особенно при использовании длительных внутренних функций или методов. Также, какой поток будет запланирован в конце интервала, определяется операционной системой. У интерпретатора нет собственного планировщика.

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

sys.settrace(tracefunc)

Установите функцию отслеживания системы, которая позволяет реализовать отладчик исходного кода Python в Python. Функция специфична для потока; для того, чтобы отладчик поддерживал несколько потоков, он должен быть зарегистрирован с помощью settrace() для каждого отлаживаемого потока.

Функции отслеживания должны иметь три аргумента: frame, event и arg. frame — текущая кадр стека. event — строка: 'call', 'line', 'return' или 'exception'. arg зависит от типа события.

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

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

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

'call'

Функция вызвана (или введена какая-либо другая область кода). Вызывается глобальная функция отслеживания; arg — None; возвращаемое значение определяет локальную функцию отслеживания.

'line'

Интерпретатор собирается выполнить новую строку кода или повторно выполнить условие цикла. Вызывается локальная функция отслеживания; arg — None; возвращаемое значение определяет новую локальную функцию отслеживания. См. Objects/lnotab_notes.txt для подробного объяснения работы.

'return'

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

'exception'

Произошло исключение. Вызывается локальная функция отслеживания; arg — кортеж (exception, value, traceback); возвращаемое значение определяет новую локальную функцию отслеживания.

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

Для получения дополнительной информации об объектах кода и кадров обратитесь к Стандартной иерархии типов.

Подробность реализации CPython: Функция settrace() предназначена только для реализации отладчиков, профилировщиков, инструментов покрытия и тому подобного. Ее поведение является частью платформы реализации, а не частью определения языка, и поэтому может быть недоступно во всех реализациях Python.

sys.set_asyncgen_hooks(firstiter, finalizer)

Принимает два необязательных именованных аргумента, которые являются вызываемыми объектами, принимающими итератор асинхронного генератора в качестве аргумента. Вызываемый объект firstiter вызывается, когда асинхронный генератор итерируется в первый раз. Вызываемый объект finalizer вызывается, когда асинхронный генератор собирается для утилизации.

Новое в версии 3.6: См. PEP 525 для получения дополнительной информации и для примера ссылки метода finalizer см. реализацию asyncio.Loop.shutdown_asyncgens в Lib/asyncio/base_events.py

Примечание

Эта функция добавлена на временной основе (см. PEP 411 для получения подробностей).

sys.set_coroutine_wrapper(wrapper)

Позволяет перехватить создание объектов генератора (только те, которые создаются функцией async def; генераторы, помеченные types.coroutine() или asyncio.coroutine(), не будут перехватываться).

Аргумент wrapper должен быть либо:

  • вызываемым объектом, принимающим один аргумент (объект генератора);
  • None, чтобы сбросить обёртку.

Если вызывается дважды, новая обёртка заменяет предыдущую. Функция специфична для потока.

Вызываемый объект wrapper не может напрямую или косвенно определять новые генераторы:

def wrapper(coro):
    async def wrap(coro):
        return await coro
    return wrap(coro)
sys.set_coroutine_wrapper(wrapper)

async def foo():
    pass

# The following line will fail with a RuntimeError, because
# ``wrapper`` creates a ``wrap(coro)`` coroutine:
foo()

См. также get_coroutine_wrapper().

Новое в версии 3.5: См. PEP 492 для получения дополнительной информации.

Примечание

Эта функция добавлена на временной основе (см. 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, если поток интерактивный (то есть, если метод isatty() возвращает True), используется кодовая страница консоли, в противном случае используется кодовая страница ANSI. На других платформах используется кодировка локали (см. locale.getpreferredencoding()).

    Однако на всех платформах вы можете переопределить это значение, установив переменную среды PYTHONIOENCODING перед запуском Python.

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

Примечание

Чтобы записать или прочитать двоичные данные в/из стандартных потоков, используйте базовый двоичный buffer объект. Например, чтобы записать байты в stdout, используйте sys.stdout.buffer.write(b'abc').

Однако, если вы пишете библиотеку (и не контролируете контекст, в котором будет выполняться ее код), помните, что стандартные потоки могут быть заменены объектами, подобными файлам, такими как io.StringIO, которые не поддерживают атрибут buffer.

END_OF_DOCUMENT_MARKER
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

A последовательность структур содержащая информацию об реализации потоков.

Атрибут

Описание

name

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

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

lock

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

  • 'semaphore': блокировка использует семафор
  • 'mutex+cond': блокировка использует мьютекс и переменную условия
  • None если эта информация неизвестна

version

Имя и версия библиотеки потоков. Это строка, или None если эта информация неизвестна.

Введено в версии 3.3.

sys.tracebacklimit

Когда эта переменная устанавливается в целое число, она определяет максимальное количество уровней отладочной информации, выводимой при возникновении необработанного исключения. По умолчанию 1000. Когда устанавливается в значение 0 или меньше, вся отладочная информация подавляется, и выводятся только тип и значение исключения.

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». Публичный черновик этого стандарта доступен по адресу http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf.

© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.6/library/sys.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API