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); значение получает экземпляр исключения (экземпляр типа исключения); стек следов получает объект стека следов (см. Справочное руководство), который инкапсулирует стек вызовов в момент первоначального возникновения исключения.
-
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 отображает состояние флагов командной строки. Атрибуты — только для чтения.
атрибут
флаг
debuginteractiveisolatedoptimizeno_user_siteno_siteignore_environmentverbosebytes_warningquiethash_randomizationИзменено в версии 3.2: Добавлен атрибут
quietдля нового флага-q.Добавлен в версии 3.2.3: Атрибут
hash_randomization.Изменено в версии 3.3: Удалён устаревший атрибут
division_warning.Изменено в версии 3.4: Добавлен атрибут
isolatedдля флага-Iisolated.
-
sys.float_info -
Последовательность структурированных данных, содержащая информацию о типе float. Она содержит низкоуровневую информацию о точности и внутреннем представлении. Значения соответствуют различным константам с плавающей запятой, определённым в стандартном заголовочном файле
float.hдля языка программирования ‘C’; см. раздел 5.2.4.2.2 стандарта ISO/IEC C 1999 [C99], «Характеристики типов с плавающей точкой», для получения подробной информации.атрибут
макрос float.h
объяснение
epsilonDBL_EPSILON
разница между 1 и наименьшим значением, большим 1, которое может быть представлено как float
digDBL_DIG
максимальное количество десятичных цифр, которые могут быть надёжно представлены в float; см. ниже
mant_digDBL_MANT_DIG
точность float: количество цифр в основании
radixв мантиссе floatDBL_MAX
максимальное конечное значение float
max_expDBL_MAX_EXP
максимальное целое число e такое, что
radix**(e-1)— это конечное значение floatmax_10_expDBL_MAX_10_EXP
максимальное целое число e такое, что
10**eнаходится в диапазоне конечных значений floatDBL_MIN
минимальное положительное нормализованное float
min_expDBL_MIN_EXP
минимальное целое число e такое, что
radix**(e-1)— это нормализованное floatmin_10_expDBL_MIN_10_EXP
минимальное целое число e такое, что
10**e— это нормализованное floatradixFLT_RADIX
основание представления показателя степени
roundsFLT_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()для получения дополнительной информации. - В Mac OS X кодирование равно
-
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.8sys.implementation.versionможет бытьsys.version_info(1, 8, 0, 'final', 0), тогда какsys.version_infoбудетsys.version_info(2, 7, 2, 'final', 0). Для CPython они имеют одинаковое значение, так как это справочная реализация.hexversion — версия реализации в шестнадцатеричном формате, как у
sys.hexversion.cache_tag — метка, используемая механизмом импорта в именах файлов кэшированных модулей. По соглашению, это будет составной частью имени и версии реализации, например,
'cpython-33'. Однако реализация Python может использовать другое значение, если это уместно. Еслиcache_tagустановлено вNone, это указывает на то, что кэширование модулей должно быть отключено.sys.implementationможет содержать дополнительные атрибуты, специфичные для реализации Python. Эти нестандартные атрибуты должны начинаться с нижнего подчеркивания и здесь не описываются. Независимо от его содержимого,sys.implementationне будет изменяться во время выполнения интерпретатора, а также между версиями реализаций. (Однако он может измениться между версиями языка Python.) Смотрите PEP 421 для получения дополнительной информации.Добавлена в версии 3.3.
-
sys.int_info -
Последовательность структур, которая содержит информацию о внутренней представленности целых чисел в Python. Атрибуты только для чтения.
Атрибут
Описание
bits_per_digitколичество битов, содержащихся в каждом разряде. Целые числа Python хранятся во внутренней базе
2**int_info.bits_per_digitsizeof_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следует добавлять только строки и байты; все другие типы данных игнорируются при импорте.
-
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, это строка с именем ОС в нижнем регистре, возвращаемая
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. -
-
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если эта информация неизвестна
Имя и версия библиотеки потоков. Это строка, или
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