sys
— Параметры и функции, специфичные для системы¶
Этот модуль предоставляет доступ к некоторым переменным, используемым или поддерживаемым интерпретатором, и к функциям, которые активно взаимодействуют с интерпретатором. Он всегда доступен.
-
sys.
abiflags
¶ На POSIX-системах, где Python был собран с помощью стандартного сценария
configure
, он содержит флаги ABI, указанные в PEP 3149.Изменено в версии 3.8: Флаги по умолчанию стали пустой строкой (флаг
m
для pymalloc был удален).Добавлено в версии 3.2.
-
sys.
addaudithook
(hook)¶ Добавляет вызываемый hook в список активных крючков аудита для текущего (под)интерпретатора.
Когда событие аудита поднимается через функцию
sys.audit()
, каждый хук будет вызван в том порядке, в котором он был добавлен с именем события и кортежем аргументов. Сначала вызываются нативные хуки, добавленные с помощьюPySys_AddAuditHook()
, затем хуки, добавленные в текущем (под)интерпретаторе. Крючки могут регистрировать событие, вызывать исключение для прерывания операции или полностью завершать процесс.Вызывает auditing event
sys.addaudithook
без аргументов.Смотрите audit events table для всех событий, вызываемых CPython, и PEP 578 для обсуждения оригинального дизайна.
Добавлено в версии 3.8.
Изменено в версии 3.8.1: Исключения, возникающие при
Exception
, но не приRuntimeError
, больше не подавляются.CPython implementation detail: Если трассировка включена (см.
settrace()
), крючки Python отслеживаются только в том случае, если вызываемая программа имеет член__cantrace__
, который установлен в значение true. В противном случае функции трассировки будут пропускать хук.
-
sys.
argv
¶ Список аргументов командной строки, передаваемых сценарию Python.
argv[0]
- это имя скрипта (зависит от операционной системы, является ли оно полным именем пути или нет). Если команда была выполнена с помощью опции командной строки интерпретатора-c
,argv[0]
устанавливается в строку'-c'
. Если интерпретатору Python не было передано имя сценария,argv[0]
будет пустой строкой.Чтобы просмотреть стандартный ввод или список файлов, заданных в командной строке, смотрите модуль
fileinput
.См. также
sys.orig_argv
.Примечание
В Unix аргументы командной строки передаются байтами из ОС. Python декодирует их с помощью кодировки файловой системы и обработчика ошибок «surrogateescape». Когда вам нужны оригинальные байты, вы можете получить их с помощью
[os.fsencode(arg) for arg in sys.argv]
.
-
sys.
audit
(event, *args)¶ Вызывает событие аудита и запускает все активные крючки аудита. event - это строка, идентифицирующая событие, а args может содержать необязательные аргументы с дополнительной информацией о событии. Количество и типы аргументов для данного события считаются общедоступным и стабильным API и не должны изменяться между выпусками.
Например, одно событие аудита называется
os.chdir
. Это событие имеет один аргумент path, который будет содержать запрашиваемый новый рабочий каталог.sys.audit()
вызовет существующие крючки аудита, передавая имя события и аргументы, и повторно поднимет первое исключение из любого крючка. В общем случае, если возникло исключение, его не следует обрабатывать, а процесс должен быть завершен как можно быстрее. Это позволяет реализации хуков решать, как реагировать на конкретные события: они могут просто регистрировать событие или прервать операцию, вызвав исключение.Крючки добавляются с помощью функций
sys.addaudithook()
илиPySys_AddAuditHook()
.Родной эквивалент этой функции -
PySys_Audit()
. Использование родной функции предпочтительнее, когда это возможно.Смотрите audit events table для всех событий, вызываемых CPython.
Добавлено в версии 3.8.
-
sys.
base_exec_prefix
¶ Устанавливается во время запуска Python, перед запуском
site.py
, на то же значение, что иexec_prefix
. Если он не запущен в virtual environment, значения останутся прежними; еслиsite.py
обнаружит, что используется виртуальная среда, значенияprefix
иexec_prefix
будут изменены, чтобы указывать на виртуальную среду, тогда какbase_prefix
иbase_exec_prefix
будут по-прежнему указывать на базовую установку Python (ту, из которой была создана виртуальная среда).Добавлено в версии 3.3.
-
sys.
base_prefix
¶ Устанавливается во время запуска Python, перед запуском
site.py
, на то же значение, что иprefix
. Если он не запущен в virtual environment, значения останутся прежними; еслиsite.py
обнаружит, что используется виртуальная среда, значенияprefix
иexec_prefix
будут изменены, чтобы указывать на виртуальную среду, тогда какbase_prefix
иbase_exec_prefix
будут по-прежнему указывать на базовую установку Python (ту, из которой была создана виртуальная среда).Добавлено в версии 3.3.
-
sys.
byteorder
¶ Индикатор исходного порядка байтов. Он будет иметь значение
'big'
на платформах big-endian (старший байт первый) и'little'
на платформах little-endian (младший байт первый).
-
sys.
builtin_module_names
¶ Кортеж строк, содержащий имена всех модулей, скомпилированных в данный интерпретатор Python. (Эта информация недоступна никаким другим способом —
modules.keys()
перечисляет только импортированные модули).См. также список
sys.stdlib_module_names
.
-
sys.
call_tracing
(func, args)¶ Вызовите
func(*args)
, когда трассировка включена. Состояние трассировки сохраняется, а затем восстанавливается. Это предназначено для вызова из отладчика с контрольной точки, чтобы рекурсивно отлаживать другой код.
-
sys.
copyright
¶ Строка, содержащая авторское право, относящееся к интерпретатору Python.
-
sys.
_clear_type_cache
()¶ Очистить внутренний кэш типов. Кэш типов используется для ускорения поиска атрибутов и методов. Используйте эту функцию только для удаления ненужных ссылок во время отладки утечки ссылок.
Эта функция должна использоваться только для внутренних и специализированных целей.
-
sys.
_current_frames
()¶ Возвращает словарь, отображающий идентификатор каждого потока на самый верхний кадр стека, активный в этом потоке на момент вызова функции. Обратите внимание, что функции в модуле
traceback
могут построить стек вызовов, учитывая такой фрейм.Это наиболее полезно для отладки тупиковой ситуации: эта функция не требует сотрудничества с заблокированными потоками, и стеки вызовов таких потоков замораживаются до тех пор, пока они остаются в тупике. Кадр, возвращаемый для не заблокированного потока, может не иметь никакого отношения к текущей активности этого потока к тому моменту, когда вызывающий код изучит этот кадр.
Эта функция должна использоваться только для внутренних и специализированных целей.
Вызывает auditing event
sys._current_frames
без аргументов.
-
sys.
_current_exceptions
()¶ Возвращает словарь, отображающий идентификатор каждого потока на самое верхнее исключение, активное в этом потоке на момент вызова функции. Если поток в данный момент не обрабатывает исключение, он не включается в словарь результатов.
Это наиболее полезно для статистического профилирования.
Эта функция должна использоваться только для внутренних и специализированных целей.
Вызывает auditing event
sys._current_exceptions
без аргументов.
-
sys.
breakpointhook
()¶ Эта функция hook вызывается встроенной функцией
breakpoint()
. По умолчанию она перебрасывает вас в отладчикpdb
, но ее можно установить на любую другую функцию, чтобы вы могли выбирать, какой отладчик будет использоваться.Подпись этой функции зависит от того, что она вызывает. Например, привязка по умолчанию (например,
pdb.set_trace()
) не ожидает никаких аргументов, но вы можете привязать ее к функции, которая ожидает дополнительных аргументов (позиционных и/или ключевых). Встроенная функцияbreakpoint()
передает свои*args
и**kws
прямо. Все, что возвращаетbreakpointhooks()
, возвращается изbreakpoint()
.В реализации по умолчанию сначала проверяется переменная окружения
PYTHONBREAKPOINT
. Если она установлена в значение"0"
, то эта функция возвращается немедленно, т.е. она является безотказной. Если переменная окружения не установлена или установлена в пустую строку, вызываетсяpdb.set_trace()
. В противном случае эта переменная должна назвать функцию для запуска, используя номенклатуру Python с точечным импортом, например,package.subpackage.module.function
. В этом случае импортируетсяpackage.subpackage.module
, и в результирующем модуле должна быть вызываемая функция с именемfunction()
. Он запускается, передавая*args
и**kws
, и все, что возвращаетfunction()
,sys.breakpointhook()
возвращает встроенной функцииbreakpoint()
.Обратите внимание, что если что-то пойдет не так во время импорта вызываемой переменной с именем
PYTHONBREAKPOINT
, будет сообщеноRuntimeWarning
и точка останова будет проигнорирована.Также обратите внимание, что если
sys.breakpointhook()
переопределяется программно,PYTHONBREAKPOINT
не обращается.Добавлено в версии 3.7.
-
sys.
_debugmallocstats
()¶ Печать низкоуровневой информации в stderr о состоянии распределителя памяти CPython.
Если Python собирается в режиме отладки <debug-build> (
configure --with-pydebug option
), он также выполняет некоторые дорогостоящие проверки внутренней согласованности.Добавлено в версии 3.3.
CPython implementation detail: Эта функция специфична для CPython. Точный формат вывода здесь не определен и может измениться.
-
sys.
dllhandle
¶ Целое число, указывающее дескриптор библиотеки Python DLL.
Availability: 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
вызывается по результату оценки expression, введенного в интерактивной сессии Python. Отображение этих значений можно настроить, присвоивsys.displayhook
другую одноаргументную функцию.Псевдокод:
def displayhook(value): if value is None: return # Set '_' to None to avoid recursion builtins._ = None text = repr(value) try: sys.stdout.write(text) except UnicodeEncodeError: bytes = text.encode(sys.stdout.encoding, 'backslashreplace') if hasattr(sys.stdout, 'buffer'): sys.stdout.buffer.write(bytes) else: text = bytes.decode(sys.stdout.encoding, 'strict') sys.stdout.write(text) sys.stdout.write("\n") builtins._ = value
Изменено в версии 3.2: Используйте обработчик ошибок
'backslashreplace'
наUnicodeEncodeError
.
-
sys.
dont_write_bytecode
¶ Если это значение истинно, Python не будет пытаться писать
.pyc
файлы при импорте исходных модулей. Это значение изначально установлено вTrue
илиFalse
в зависимости от опции командной строки-B
и переменной окруженияPYTHONDONTWRITEBYTECODE
, но вы можете установить его самостоятельно, чтобы контролировать генерацию файлов байткода.
-
sys.
pycache_prefix
¶ Если это значение установлено (не
None
), Python будет записывать файлы кэша байткода.pyc
в (и читать их из) параллельного дерева каталогов, корнем которого является этот каталог, а не из__pycache__
каталогов в дереве исходного кода. Любые каталоги__pycache__
в дереве исходного кода будут игнорироваться, а новые файлы .pyc будут записываться с префиксом pycache. Таким образом, если вы используетеcompileall
в качестве шага предварительной сборки, вы должны убедиться, что вы запускаете его с тем же префиксом pycache (если таковой имеется), который вы будете использовать во время выполнения.Относительный путь интерпретируется относительно текущего рабочего каталога.
Это значение изначально устанавливается на основе значения опции командной строки
-X
pycache_prefix=PATH
или переменной окруженияPYTHONPYCACHEPREFIX
(приоритет имеет командная строка). Если ни то, ни другое не установлено, то это значение равноNone
.Добавлено в версии 3.8.
-
sys.
excepthook
(type, value, traceback)¶ Эта функция выводит заданный traceback и исключение в
sys.stderr
.Когда возникает исключение, но оно не поймано, интерпретатор вызывает команду
sys.excepthook
с тремя аргументами: класс исключения, экземпляр исключения и объект трассировки. В интерактивном сеансе это происходит непосредственно перед возвратом управления в подсказку; в программе на Python это происходит непосредственно перед выходом из программы. Обработку таких исключений верхнего уровня можно настроить, присвоивsys.excepthook
еще одну функцию с тремя аргументами.Вызывает auditing event
sys.excepthook
с аргументамиhook
,type
,value
,traceback
.См.также
Функция
sys.unraisablehook()
обрабатывает неустранимые исключения, а функцияthreading.excepthook()
обрабатывает исключение, вызванноеthreading.Thread.run()
.
-
sys.
__breakpointhook__
¶ -
sys.
__displayhook__
¶ -
sys.
__excepthook__
¶ -
sys.
__unraisablehook__
¶ Эти объекты содержат исходные значения
breakpointhook
,displayhook
,excepthook
иunraisablehook
в начале программы. Они сохраняются для того, чтобыbreakpointhook
,displayhook
иexcepthook
,unraisablehook
можно было восстановить в случае их замены на сломанные или альтернативные объекты.Добавлено в версии 3.7: __breakpointhook__
Добавлено в версии 3.8: __unraisablehook__
-
sys.
exc_info
()¶ Эта функция возвращает кортеж из трех значений, дающих информацию об исключении, которое в данный момент обрабатывается. Возвращаемая информация специфична как для текущего потока, так и для текущего стекового кадра. Если текущий стековый фрейм не обрабатывает исключение, то информация берется из вызывающего стекового фрейма или его вызывающей стороны, и так далее, пока не будет найден стековый фрейм, который обрабатывает исключение. Здесь «обработка исключения» определяется как «выполнение условия except». Для любого стекового кадра доступна только информация об обрабатываемом в данный момент исключении.
Если нигде в стеке не обрабатывается исключение, возвращается кортеж, содержащий три значения
None
. В противном случае возвращаются значения(type, value, traceback)
. Их значение следующее: type получает тип обрабатываемого исключения (подклассBaseException
); value получает экземпляр исключения (экземпляр типа исключения); traceback получает traceback object, который содержит стек вызовов в точке, где первоначально произошло исключение.
-
sys.
exec_prefix
¶ Строка, задающая префикс директории, куда устанавливаются зависящие от платформы файлы Python; по умолчанию это также
'/usr/local'
. Он может быть установлен во время сборки с помощью аргумента--exec-prefix
в скрипте configure. В частности, все конфигурационные файлы (например, заголовочный файлpyconfig.h
) устанавливаются в каталогexec_prefix/lib/pythonX.Y/config
, а модули разделяемых библиотек - вexec_prefix/lib/pythonX.Y/lib-dynload
, где X.Y - номер версии Python, например3.2
.Примечание
Если действует virtual environment, это значение будет изменено в
site.py
, чтобы указать на виртуальную среду. Значение для установки Python по-прежнему будет доступно черезbase_exec_prefix
.
-
sys.
executable
¶ Строка, указывающая абсолютный путь к исполняемому двоичному файлу для интерпретатора Python, в системах, где это имеет смысл. Если Python не может получить реальный путь к исполняемому файлу,
sys.executable
будет пустой строкой илиNone
.
-
sys.
exit
([arg])¶ Вызвать исключение
SystemExit
, сигнализирующее о намерении выйти из интерпретатора.Необязательный аргумент arg может быть целым числом, дающим статус завершения (по умолчанию равен нулю), или объектом другого типа. Если это целое число, то ноль считается «успешным завершением», а любое ненулевое значение считается «ненормальным завершением» в оболочках и тому подобных программах. Большинство систем требуют, чтобы оно находилось в диапазоне 0–127, и в противном случае выдают неопределенные результаты. В некоторых системах существует соглашение о присвоении специфических значений определенным кодам выхода, но оно, как правило, недостаточно разработано; программы Unix обычно используют 2 для ошибок синтаксиса командной строки и 1 для всех других видов ошибок. Если передается объект другого типа,
None
эквивалентен передаче нуля, а любой другой объект выводится наstderr
и приводит к коду выхода 1. В частности,sys.exit("some error message")
- это быстрый способ выйти из программы при возникновении ошибки.Поскольку
exit()
в конечном итоге «только» вызывает исключение, он завершает процесс только при вызове из главного потока, и исключение не перехватывается. Действия по очистке, указанные в пунктах finally операторовtry
, выполняются, и можно перехватить попытку выхода на внешнем уровне.Изменено в версии 3.6: Если в процессе очистки возникает ошибка после того, как интерпретатор Python поймал
SystemExit
(например, ошибка при промывке буферизованных данных в стандартных потоках), статус выхода изменяется на 120.
-
sys.
flags
¶ Атрибут named tuple flags отображает состояние флагов командной строки. Атрибуты доступны только для чтения.
атрибут
флаг
debug
interactive
isolated
optimize
no_user_site
no_site
ignore_environment
verbose
bytes_warning
quiet
hash_randomization
dev_mode
utf8_mode
Изменено в версии 3.2: Добавлен атрибут
quiet
для нового флага-q
.Добавлено в версии 3.2.3: Атрибут
hash_randomization
.Изменено в версии 3.3: Удален устаревший атрибут
division_warning
.Изменено в версии 3.4: Добавлен атрибут
isolated
для флага-I
isolated
.Изменено в версии 3.7: Добавлен атрибут
dev_mode
для нового флага Python Development Mode и атрибутutf8_mode
для нового флага-X
utf8
.
-
sys.
float_info
¶ named tuple содержит информацию о типе float. Он содержит низкоуровневую информацию о точности и внутреннем представлении. Значения соответствуют различным константам с плавающей точкой, определенным в стандартном заголовочном файле
float.h
для языка программирования „C“; подробнее см. раздел 5.2.4.2.2 стандарта ISO/IEC C [C99] 1999 года «Характеристики плавающих типов».атрибут
макрос float.h
объяснение
epsilon
макрос float.h
разность между 1,0 и наименьшим значением, большим 1,0, которое можно представить в виде плавающей величины
См. также
math.ulp()
.dig
DBL_DIG
максимальное количество десятичных цифр, которое может быть достоверно представлено в плавающей форме; см. ниже
mant_dig
DBL_MANT_DIG
точность float: количество цифр base-
radix
в значащем числе floatDBL_MAX
максимальное представимое положительное конечное число
max_exp
DBL_MAX_EXP
максимальное целое число e такое, что
radix**(e-1)
является представимым конечным числом с плавающей точкойmax_10_exp
DBL_MAX_10_EXP
максимальное целое число e такое, что
10**e
находится в диапазоне представимых конечных плавающих чиселDBL_MIN
минимально представимое положительное нормализованное плавающее число
Используйте
math.ulp(0.0)
для получения наименьшего положительного денормализованного представимого числа.min_exp
DBL_MIN_EXP
минимальное целое число e такое, что
radix**(e-1)
является нормализованной плавающей точкойmin_10_exp
DBL_MIN_10_EXP
минимальное целое число e такое, что
10**e
является нормализованной плавающей точкой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.
getandroidapilevel
()¶ Возвращает версию API Android на момент сборки в виде целого числа.
Availability: Android.
Добавлено в версии 3.7.
-
sys.
getdefaultencoding
()¶ Возвращает имя текущей кодировки строки по умолчанию, используемой реализацией Unicode.
-
sys.
getdlopenflags
()¶ Возвращает текущее значение флагов, которые используются для вызовов
dlopen()
. Символические имена значений флагов можно найти в модулеos
(константыRTLD_xxx
, напримерos.RTLD_LAZY
).Availability: Unix.
-
sys.
getfilesystemencoding
()¶ Получите filesystem encoding: кодировку, используемую с filesystem error handler для преобразования между именами файлов Unicode и байтовыми именами файлов. Обработчик ошибок файловой системы возвращается из
getfilesystemencoding()
.Для лучшей совместимости для имен файлов во всех случаях следует использовать str, хотя представление имен файлов в виде байтов также поддерживается. Функции, принимающие или возвращающие имена файлов, должны поддерживать либо str, либо bytes и внутренне преобразовывать их в предпочтительное представление системы.
os.fsencode()
иos.fsdecode()
должны использоваться для обеспечения правильной кодировки и режима ошибок.filesystem encoding and error handler конфигурируются при запуске Python функцией
PyConfig_Read()
: см. членыfilesystem_encoding
иfilesystem_errors
PyConfig
.Изменено в версии 3.2: Результат
getfilesystemencoding()
уже не может бытьNone
.Изменено в версии 3.6: Windows больше не гарантирует возврат
'mbcs'
. Для получения дополнительной информации смотрите PEP 529 и_enablelegacywindowsfsencoding()
.Изменено в версии 3.7: Возвращает
'utf-8'
, если Python UTF-8 Mode включен.
-
sys.
getfilesystemencodeerrors
()¶ Получите filesystem error handler: обработчик ошибок, используемый с filesystem encoding для преобразования между именами файлов Unicode и именами байтов. Кодировка файловой системы возвращается из
getfilesystemencoding()
.os.fsencode()
иos.fsdecode()
должны использоваться для обеспечения правильной кодировки и режима ошибок.filesystem encoding and error handler конфигурируются при запуске Python функцией
PyConfig_Read()
: см. членыfilesystem_encoding
иfilesystem_errors
PyConfig
.Добавлено в версии 3.6.
-
sys.
getrefcount
(object)¶ Возвращает счетчик ссылок на объект. Возвращаемый счетчик обычно на единицу больше, чем вы ожидаете, потому что он включает (временную) ссылку в качестве аргумента для
getrefcount()
.
-
sys.
getrecursionlimit
()¶ Возвращает текущее значение предела рекурсии, максимальной глубины стека интерпретатора Python. Этот предел предотвращает бесконечную рекурсию от переполнения стека C и аварийного завершения работы Python. Он может быть установлен командой
setrecursionlimit()
.
-
sys.
getsizeof
(object[, default])¶ Возвращает размер объекта в байтах. Объект может быть любого типа. Все встроенные объекты будут возвращать корректные результаты, но это не обязательно должно быть верно для сторонних расширений, так как это зависит от реализации.
Учитывается только расход памяти, непосредственно приписываемый объекту, а не расход памяти объектов, на которые он ссылается.
Если задано, будет возвращено значение default, если объект не предоставляет средств для получения размера. В противном случае будет вызвана ошибка
TypeError
.getsizeof()
вызывает метод объекта__sizeof__
и добавляет дополнительные накладные расходы на сборщик мусора, если объект управляется сборщиком мусора.Смотрите recursive sizeof recipe пример рекурсивного использования
getsizeof()
для нахождения размера контейнеров и всего их содержимого.
-
sys.
getswitchinterval
()¶ Возвращает «интервал переключения потоков» интерпретатора; см.
setswitchinterval()
.Добавлено в версии 3.2.
-
sys.
_getframe
([depth])¶ Возвращает объект фрейма из стека вызовов. Если указано необязательное целое число depth, возвращается объект фрейма на столько вызовов ниже вершины стека. Если это глубже, чем стек вызовов, то выдается
ValueError
. По умолчанию depth равно нулю, возвращая фрейм на вершине стека вызовов.Вызывает auditing event
sys._getframe
без аргументов.CPython implementation detail: Эта функция должна использоваться только для внутренних и специализированных целей. Не гарантируется ее существование во всех реализациях Python.
-
sys.
getprofile
()¶ Получить функцию профилировщика, заданную командой
setprofile()
.
-
sys.
gettrace
()¶ Получить функцию трассировки, заданную командой
settrace()
.CPython implementation detail: Функция
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 элементов можно получить по индексу.платформа будет
2 (VER_PLATFORM_WIN32_NT)
.product_type может быть одним из следующих значений:
Постоянная
Значение
1 (VER_NT_WORKSTATION)
Система представляет собой рабочую станцию.
2 (VER_NT_DOMAIN_CONTROLLER)
Система является контроллером домена.
3 (VER_NT_SERVER)
Система является сервером, но не контроллером домена.
Эта функция обертывает функцию Win32
GetVersionEx()
; см. документацию Microsoft поOSVERSIONINFOEX()
для получения дополнительной информации об этих полях.platform_version возвращает основную версию, минорную версию и номер сборки текущей операционной системы, а не версию, которая эмулируется для данного процесса. Он предназначен для использования в журнале регистрации, а не для определения возможностей.
Примечание
platform_version берет версию из kernel32.dll, которая может отличаться от версии ОС. Для получения точной версии ОС используйте модуль
platform
.Availability: Windows.
Изменено в версии 3.2: Изменен на именованный кортеж и добавлены service_pack_minor, service_pack_major, suite_mask и product_type.
Изменено в версии 3.6: Добавлена платформа_версии.
-
sys.
get_asyncgen_hooks
()¶ Возвращает объект asyncgen_hooks, который похож на
namedtuple
вида (firstiter, finalizer), где firstiter и finalizer ожидаются какNone
или функции, принимающие asynchronous generator iterator в качестве аргумента, и используются для планирования финализации асинхронного генератора циклом событий.Добавлено в версии 3.6: Более подробную информацию см. в разделе PEP 525.
Примечание
Эта функция была добавлена на временной основе (подробнее см. PEP 411).
-
sys.
get_coroutine_origin_tracking_depth
()¶ Получение текущей глубины отслеживания начала кориутины, заданной командой
set_coroutine_origin_tracking_depth()
.Добавлено в версии 3.7.
Примечание
Эта функция была добавлена на временной основе (подробнее см. PEP 411). Используйте ее только в целях отладки.
-
sys.
hash_info
¶ named tuple, задающий параметры реализации числового хэша. Более подробно о хешировании числовых типов смотрите Хеширование числовых типов.
атрибут
объяснение
width
ширина в битах, используемая для хэш-значений
modulus
простой модуль P, используемый для схемы числового хэширования
inf
хэш-значение, возвращаемое для положительной бесконечности
nan
(этот атрибут больше не используется)
imag
множитель, используемый для мнимой части комплексного числа
algorithm
имя алгоритма для хэширования строк, байтов и просмотра памяти
hash_bits
внутренний выходной размер хэш-алгоритма
seed_bits
размер начального ключа хэш-алгоритма
Добавлено в версии 3.2.
Изменено в версии 3.4: Добавлены алгоритм, 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()
. Для более удобного для человека кодирования той же информации можно использовать named tuplesys.version_info
.Более подробную информацию о
hexversion
можно найти на сайте Версионирование API и ABI.
-
sys.
implementation
¶ Объект, содержащий информацию о реализации текущего запущенного интерпретатора Python. Следующие атрибуты должны существовать во всех реализациях Python.
name - это идентификатор реализации, например,
'cpython'
. Фактическая строка определяется реализацией Python, но гарантируется, что она будет в нижнем регистре.version - это именованный кортеж, в том же формате, что и
sys.version_info
. Он представляет собой версию реализации Python. Это значение отличается от конкретной версии языка Python, которой соответствует запущенный в данный момент интерпретатор, которую представляетsys.version_info
. Например, для PyPy 1.8sys.implementation.version
может бытьsys.version_info(1, 8, 0, 'final', 0)
, тогда какsys.version_info
будетsys.version_info(2, 7, 2, 'final', 0)
. Для CPython это одно и то же значение, поскольку он является эталонной реализацией.hexversion - это версия реализации в шестнадцатеричном формате, например
sys.hexversion
.cache_tag - это тег, используемый механизмом импорта в именах файлов кэшируемых модулей. По соглашению, это будет композиция имени реализации и версии, например
'cpython-33'
. Однако реализация Python может использовать и другое значение, если это уместно. Еслиcache_tag
имеет значениеNone
, это означает, что кэширование модулей должно быть отключено.sys.implementation
может содержать дополнительные атрибуты, специфичные для реализации Python. Эти нестандартные атрибуты должны начинаться с символа подчеркивания и здесь не описываются. Независимо от своего содержимого,sys.implementation
не изменяется ни во время запуска интерпретатора, ни между версиями реализации. (Однако он может меняться между версиями языка Python.) Дополнительную информацию см. в разделе PEP 421.Добавлено в версии 3.3.
Примечание
Добавление новых необходимых атрибутов должно проходить через обычный процесс PEP. См. раздел PEP 421 для получения дополнительной информации.
-
sys.
int_info
¶ Атрибут named tuple, содержащий информацию о внутреннем представлении целых чисел в Python. Атрибуты доступны только для чтения.
Атрибут
Пояснение
bits_per_digit
количество битов, хранящихся в каждом разряде. Целые числа Python внутренне хранятся в базе
2**int_info.bits_per_digit
.sizeof_digit
размер в байтах типа C, используемого для представления цифры
Добавлено в версии 3.1.
-
sys.
__interactivehook__
¶ Когда этот атрибут существует, его значение автоматически вызывается (без аргументов) при запуске интерпретатора в interactive mode. Это делается после чтения файла
PYTHONSTARTUP
, чтобы вы могли установить там этот хук. Модульsite
sets this.Вызывает auditing event
cpython.run_interactivehook
с аргументомhook
.Добавлено в версии 3.4.
-
sys.
intern
(string)¶ Введите строку в таблицу «интернированных» строк и верните интернированную строку - которая сама является строкой или ее копией. Интернализация строк полезна для повышения производительности при поиске по словарю – если ключи в словаре интернализованы, а ключ поиска интернализован, то сравнение ключей (после хэширования) может быть выполнено сравнением указателей вместо сравнения строк. Обычно имена, используемые в программах Python, автоматически интернируются, а словари, используемые для хранения атрибутов модулей, классов или экземпляров, имеют интернированные ключи.
Интернированные строки не бессмертны; чтобы воспользоваться ими, необходимо сохранить ссылку на возвращаемое значение
intern()
.
-
sys.
is_finalizing
()¶ Возвращает
True
, если интерпретатор Python является shutting down,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
¶ Целое число, дающее значение самой большой кодовой точки Unicode, т.е.
1114111
(0x10FFFF
в шестнадцатеричной системе).Изменено в версии 3.3: До PEP 393,
sys.maxunicode
раньше было0xFFFF
или0x10FFFF
, в зависимости от опции конфигурации, которая указывала, хранятся ли символы Unicode как UCS-2 или UCS-4.
-
sys.
meta_path
¶ Список объектов meta path finder, у которых вызываются их методы
find_spec()
, чтобы проверить, может ли один из объектов найти импортируемый модуль. По умолчанию он содержит объекты, реализующие стандартную семантику импорта Python. Методfind_spec()
вызывается как минимум с абсолютным именем импортируемого модуля. Если импортируемый модуль содержится в пакете, то в качестве второго аргумента передается атрибут родительского пакета__path__
. Метод возвращает module spec, илиNone
, если модуль не может быть найден.См.также
importlib.abc.MetaPathFinder
Абстрактный базовый класс, определяющий интерфейс объектов finder на
meta_path
.importlib.machinery.ModuleSpec
Конкретный класс, экземпляры которого должен возвращать
find_spec()
.
Изменено в версии 3.4: Module specs были введены в Python 3.4, по PEP 451. Более ранние версии Python искали метод под названием
find_module()
. Он по-прежнему вызывается в качестве запасного варианта, если у записиmeta_path
нет методаfind_spec()
.
-
sys.
modules
¶ Это словарь, который сопоставляет имена модулей с модулями, которые уже были загружены. Этим можно манипулировать для принудительной перезагрузки модулей и других трюков. Однако замена словаря не всегда будет работать так, как ожидается, а удаление существенных элементов из словаря может привести к сбою Python. Если вы хотите выполнить итерацию по этому глобальному словарю, всегда используйте
sys.modules.copy()
илиtuple(sys.modules)
, чтобы избежать исключений, поскольку его размер может измениться во время итерации как побочный эффект кода или активности в других потоках.
-
sys.
orig_argv
¶ Список исходных аргументов командной строки, переданных исполняемому файлу Python.
См. также
sys.argv
.Добавлено в версии 3.10.
-
sys.
path
¶ Список строк, определяющий путь поиска модулей. Инициализируется из переменной окружения
PYTHONPATH
, плюс по умолчанию в зависимости от установки.Как инициализируется при запуске программы, первый элемент этого списка,
path[0]
, является каталогом, содержащим скрипт, который был использован для вызова интерпретатора Python. Если каталог скрипта недоступен (например, если интерпретатор вызывается интерактивно или если скрипт считывается из стандартного ввода),path[0]
- пустая строка, которая направляет Python сначала искать модули в текущем каталоге. Обратите внимание, что каталог скрипта вставляется перед записями, вставленными в результатеPYTHONPATH
.Программа может свободно изменять этот список для своих целей. В
sys.path
следует добавлять только строки и байты; все остальные типы данных игнорируются при импорте.
-
sys.
path_hooks
¶ Список вызываемых переменных, которые принимают аргумент path и пытаются создать finder для пути. Если искатель может быть создан, он должен быть возвращен вызываемой переменной, в противном случае вызовите
ImportError
.Первоначально указывается в PEP 302.
-
sys.
path_importer_cache
¶ Словарь, действующий как кэш для объектов finder. Ключами являются пути, которые были переданы в
sys.path_hooks
, а значениями - найденные искатели. Если путь является действительным путем файловой системы, но ни один искатель не найден наsys.path_hooks
, то сохраняетсяNone
.Первоначально указывается в PEP 302.
Изменено в версии 3.3:
None
сохраняется вместоimp.NullImporter
, если не найдено ни одного искателя.
-
sys.
platform
¶ Эта строка содержит идентификатор платформы, который можно использовать, например, для добавления специфических для платформы компонентов к
sys.path
.Для Unix-систем, за исключением Linux и AIX, это имя ОС со строчной буквы, возвращаемое командой
uname -s
с добавлением первой части версии, возвращаемой командойuname -r
, например,'sunos5'
или'freebsd8'
, на момент создания Python. Если вы не хотите проверять конкретную версию системы, рекомендуется использовать следующую идиому:if sys.platform.startswith('freebsd'): # FreeBSD-specific code here... elif sys.platform.startswith('linux'): # Linux-specific code here... elif sys.platform.startswith('aix'): # AIX-specific code here...
Для других систем значения следующие:
Система
platform
значениеAIX
'aix'
Linux
'linux'
Windows
'win32'
Windows/Cygwin
'cygwin'
macOS
'darwin'
Изменено в версии 3.3: В Linux
sys.platform
больше не содержит основной версии. Это всегда'linux'
, вместо'linux2'
или'linux3'
. Поскольку старые версии Python включают номер версии, рекомендуется всегда использовать представленную выше идиомуstartswith
.Изменено в версии 3.8: На AIX,
sys.platform
больше не содержит основную версию. Это всегда'aix'
, вместо'aix5'
или'aix7'
. Поскольку старые версии Python включают номер версии, рекомендуется всегда использовать представленную выше идиомуstartswith
.См.также
os.name
имеет более грубую детализацию.os.uname()
дает системно-зависимую информацию о версии.Модуль
platform
обеспечивает детальную проверку идентичности системы.
-
sys.
platlibdir
¶ Имя каталога библиотеки для конкретной платформы. Используется для построения пути стандартной библиотеки и путей установленных модулей расширения.
На большинстве платформ он равен
"lib"
. На Fedora и SuSE он равен"lib64"
на 64-битных платформах, что дает следующиеsys.path
пути (гдеX.Y
- версия Pythonmajor.minor
):/usr/lib64/pythonX.Y/
: Стандартная библиотека (какos.py
из модуляos
)/usr/lib64/pythonX.Y/lib-dynload/
: Модули расширения C стандартной библиотеки (как и модульerrno
, точное имя файла зависит от платформы)/usr/lib/pythonX.Y/site-packages/
(всегда используйтеlib
, а неsys.platlibdir
): Сторонние модули/usr/lib64/pythonX.Y/site-packages/
: Модули расширения C сторонних пакетов
Добавлено в версии 3.9.
-
sys.
prefix
¶ Строка, задающая префикс каталога, в который устанавливаются независимые от платформы файлы Python; на Unix по умолчанию
'/usr/local'
. Он может быть задан во время сборки с помощью аргумента--prefix
в сценарии configure. Производные пути см. в Пути установки.Примечание
Если действует virtual environment, это значение будет изменено в
site.py
, чтобы указать на виртуальную среду. Значение для установки Python по-прежнему будет доступно черезbase_prefix
.
-
sys.
ps1
¶ -
sys.
ps2
¶ Строки, определяющие первичный и вторичный запрос интерпретатора. Они определяются только в том случае, если интерпретатор находится в интерактивном режиме. Их начальными значениями в этом случае являются
'>>> '
и'... '
. Если любой из переменных присвоен нестроковый объект, то егоstr()
переоценивается каждый раз, когда интерпретатор готовится прочитать новую интерактивную команду; это может быть использовано для реализации динамической подсказки.
-
sys.
setdlopenflags
(n)¶ Устанавливает флаги, используемые интерпретатором для вызовов
dlopen()
, например, когда интерпретатор загружает модули расширения. Помимо прочего, это позволит лениво разрешать символы при импорте модуля, если вызвать его какsys.setdlopenflags(0)
. Чтобы разделить символы между модулями расширения, вызовитеsys.setdlopenflags(os.RTLD_GLOBAL)
. Символические имена для значений флагов можно найти в модулеos
(константыRTLD_xxx
, напримерos.RTLD_LAZY
).Availability: Unix.
-
sys.
setprofile
(profilefunc)¶ Установите функцию профиля системы, которая позволяет реализовать профилировщик исходного кода Python на языке Python. Дополнительную информацию о профилировщике Python см. в главе Профилировщики Python. Функция профиля системы вызывается аналогично функции трассировки системы (см.
settrace()
), но вызывается с разными событиями, например, она не вызывается для каждой выполненной строки кода (только при вызове и возврате, но событие возврата сообщается, даже если было установлено исключение). Функция специфична для потоков, но у профайлера нет способа узнать о переключении контекста между потоками, поэтому ее не имеет смысла использовать при наличии нескольких потоков. Кроме того, ее возвращаемое значение не используется, поэтому она может просто вернутьNone
. Ошибка в функции профайлера приведет к тому, что она сама себя отменит.Профильные функции должны иметь три аргумента: frame, event и arg. frame - это текущий фрейм стека. event - это строка:
'call'
,'return'
,'c_call'
,'c_return'
или'c_exception'
. arg зависит от типа события.Вызывает auditing event
sys.setprofile
без аргументов.События имеют следующее значение:
'call'
Вызывается функция (или вводится какой-либо другой блок кода). Вызывается профильная функция; arg -
None
.'return'
Функция (или другой блок кода) вот-вот вернется. Вызывается функция profile; arg - значение, которое будет возвращено, или
None
, если событие вызвано возникновением исключения.'c_call'
Сейчас будет вызвана функция языка Си. Это может быть функция расширения или встроенная функция. arg - это объект функции Си.
'c_return'
Функция C вернулась. arg - это объект функции Си.
'c_exception'
Функция языка Си вызвала исключение. arg - это объект функции Си.
-
sys.
setrecursionlimit
(limit)¶ Установите максимальную глубину стека интерпретатора Python на limit. Это ограничение предотвращает бесконечную рекурсию от переполнения стека C и аварийного завершения работы Python.
Максимально возможный предел зависит от платформы. Пользователю может понадобиться установить более высокий предел, если у него есть программа, требующая глубокой рекурсии, и платформа, поддерживающая более высокий предел. Это следует делать с осторожностью, так как слишком высокий предел может привести к сбою.
Если новый предел слишком мал при текущей глубине рекурсии, возникает исключение
RecursionError
.Изменено в версии 3.5.1: Исключение
RecursionError
теперь вызывается, если новый предел слишком мал при текущей глубине рекурсии.
-
sys.
setswitchinterval
(interval)¶ Установите интервал переключения потоков интерпретатора (в секундах). Это значение с плавающей точкой определяет идеальную продолжительность «таймлайнов», выделяемых параллельно работающим потокам Python. Обратите внимание, что фактическое значение может быть больше, особенно если используются долго работающие внутренние функции или методы. Кроме того, какой поток станет запланированным в конце интервала, решает операционная система. Интерпретатор не имеет собственного планировщика.
Добавлено в версии 3.2.
-
sys.
settrace
(tracefunc)¶ Устанавливает функцию трассировки системы, которая позволяет реализовать отладчик исходного кода Python на языке Python. Функция зависит от потока; чтобы отладчик поддерживал несколько потоков, он должен зарегистрировать функцию трассировки с помощью
settrace()
для каждого отлаживаемого потока или использоватьthreading.settrace()
.Функции трассировки должны иметь три аргумента: frame, event и arg. frame - это текущий кадр стека. event - это строка:
'call'
,'line'
,'return'
,'exception'
или'opcode'
. arg зависит от типа события.Функция трассировки вызывается (с event, установленным в
'call'
) каждый раз, когда вводится новая локальная область; она должна возвращать ссылку на локальную функцию трассировки, которая будет использоваться для новой области, илиNone
, если область не должна трассироваться.Локальная функция трассировки должна возвращать ссылку на себя (или на другую функцию для дальнейшей трассировки в этой области), или
None
для отключения трассировки в этой области.Если в функции трассировки произошла какая-либо ошибка, она будет снята, так же как и при вызове
settrace(None)
.События имеют следующее значение:
'call'
Вызывается функция (или вводится какой-либо другой блок кода). Вызывается глобальная функция трассировки; arg -
None
; возвращаемое значение определяет локальную функцию трассировки.'line'
Интерпретатор собирается выполнить новую строку кода или повторно выполнить условие цикла. Вызывается локальная функция трассировки; arg -
None
; возвращаемое значение определяет новую локальную функцию трассировки. Подробное объяснение того, как это работает, см. вObjects/lnotab_notes.txt
. Перлинейные события могут быть отключены для кадра путем установкиf_trace_lines
вFalse
на этом кадре.'return'
Функция (или другой блок кода) вот-вот вернется. Вызывается локальная функция трассировки; arg - значение, которое будет возвращено, или
None
, если событие вызвано возникновением исключения. Возвращаемое значение функции трассировки игнорируется.'exception'
Произошло исключение. Вызывается локальная функция трассировки; arg - кортеж
(exception, value, traceback)
; возвращаемое значение задает новую локальную функцию трассировки.'opcode'
Интерпретатор собирается выполнить новый опкод (подробности об опкоде см. в
dis
). Вызывается локальная функция трассировки; arg - этоNone
; возвращаемое значение определяет новую локальную функцию трассировки. По умолчанию события для каждого опкода не испускаются: они должны быть явно запрошены установкойf_trace_opcodes
наTrue
в кадре.
Обратите внимание, что по мере распространения исключения вниз по цепочке вызывающих команд, на каждом уровне генерируется событие
'exception'
.Для более тонкого использования можно установить функцию трассировки, назначив
frame.f_trace = tracefunc
явно, а не полагаясь на то, что она будет установлена косвенно через возвращаемое значение уже установленной функции трассировки. Это также необходимо для активации функции трассировки на текущем кадре, чего не делаетsettrace()
. Обратите внимание, что для того, чтобы это работало, глобальная функция трассировки должна быть установлена с помощьюsettrace()
, чтобы включить механизм трассировки во время выполнения, но это не обязательно должна быть та же самая функция трассировки (например, это может быть функция трассировки с низкой нагрузкой, которая просто возвращаетNone
для немедленного отключения себя на каждом кадре).Более подробную информацию об объектах кода и фрейма см. в разделе Стандартная иерархия типов.
Вызывает auditing event
sys.settrace
без аргументов.CPython implementation detail: Функция
settrace()
предназначена только для реализации отладчиков, профилировщиков, инструментов покрытия и тому подобного. Ее поведение является частью платформы реализации, а не частью определения языка, и поэтому она может быть доступна не во всех реализациях Python.Изменено в версии 3.7: <<<Добавлен тип события
'opcode'
; добавлены атрибутыf_trace_lines
иf_trace_opcodes
для фреймов
-
sys.
set_asyncgen_hooks
(firstiter, finalizer)¶ Принимает два необязательных аргумента в виде ключевых слов, которые являются вызываемыми переменными, принимающими asynchronous generator iterator в качестве аргумента. Вызываемая переменная firstiter будет вызвана, когда асинхронный генератор будет итерироваться в первый раз. Вызывается finalizer, когда асинхронный генератор собирается в мусор.
Вызывает auditing event
sys.set_asyncgen_hooks_firstiter
без аргументов.Вызывает auditing event
sys.set_asyncgen_hooks_finalizer
без аргументов.Два события аудита возникают потому, что базовый API состоит из двух вызовов, каждый из которых должен вызывать свое собственное событие.
Добавлено в версии 3.6: Более подробную информацию смотрите в PEP 525, а пример метода финализатора смотрите в реализации
asyncio.Loop.shutdown_asyncgens
в Lib/asyncio/base_events.py.Примечание
Эта функция была добавлена на временной основе (подробнее см. PEP 411).
-
sys.
set_coroutine_origin_tracking_depth
(depth)¶ Позволяет включить или выключить отслеживание происхождения coroutine. При включении атрибут
cr_origin
на объектах coroutine будет содержать кортеж из (имя файла, номер строки, имя функции) кортежей, описывающих отслеживание, где был создан объект coroutine, причем первым будет самый последний вызов. Если атрибут отключен,cr_origin
будет равен None.Чтобы включить, передайте значение depth больше нуля; это устанавливает количество кадров, информация о которых будет захвачена. Чтобы отключить, передайте значение depth равное нулю.
Эта настройка зависит от конкретного потока.
Добавлено в версии 3.7.
Примечание
Эта функция была добавлена на временной основе (подробнее см. PEP 411). Используйте ее только в целях отладки.
-
sys.
_enablelegacywindowsfsencoding
()¶ Изменяет filesystem encoding and error handler на „mbcs“ и „replace“ соответственно, для согласованности с версиями Python до 3.6.
Это эквивалентно определению переменной окружения
PYTHONLEGACYWINDOWSFSENCODING
перед запуском Python.См. также
sys.getfilesystemencoding()
иsys.getfilesystemencodeerrors()
.Availability: Windows.
Добавлено в версии 3.6: Более подробную информацию см. в разделе PEP 529.
-
sys.
stdin
¶ -
sys.
stdout
¶ -
sys.
stderr
¶ File objects используется интерпретатором для стандартного ввода, вывода и ошибок:
stdin
используется для всего интерактивного ввода (включая вызовыinput()
);stdout
используется для вывода утвержденийprint()
и expression, а также для подсказокinput()
;Собственные подсказки интерпретатора и его сообщения об ошибках идут в
stderr
.
Эти потоки являются регулярными text files, подобно потокам, возвращаемым функцией
open()
. Их параметры выбираются следующим образом:Кодировка и обработка ошибок инициализируются из
PyConfig.stdio_encoding
иPyConfig.stdio_errors
.В Windows для консольного устройства используется UTF-8. Несимвольные устройства, такие как дисковые файлы и трубы, используют кодировку системной локали (т.е. кодовую страницу ANSI). Неконсольные символьные устройства, такие как NUL (т.е. где
isatty()
возвращаетTrue
), используют значение кодовых страниц ввода и вывода консоли при запуске, соответственно для stdin и stdout/stderr. По умолчанию это значение равно системному locale encoding, если процесс изначально не подключен к консоли.Особое поведение консоли можно отменить, установив переменную окружения PYTHONLEGACYWINDOWSSTDIO перед запуском Python. В этом случае кодовые страницы консоли используются так же, как и для любого другого символьного устройства.
На всех платформах вы можете переопределить кодировку символов, установив переменную окружения
PYTHONIOENCODING
перед запуском Python или используя новый параметр командной строки-X
utf8
и переменную окруженияPYTHONUTF8
. Однако для консоли Windows это применимо только в том случае, если также установлена переменнаяPYTHONLEGACYWINDOWSSTDIO
.В интерактивном режиме поток
stdout
является линейно-буферизованным. В противном случае он буферизуется блоками, как обычные текстовые файлы. Потокstderr
в обоих случаях является линейно-буферизованным. Вы можете сделать оба потока небуферизованными, передав опцию командной строки-u
или установив переменную окруженияPYTHONUNBUFFERED
.
Изменено в версии 3.9: Неинтерактивный
stderr
теперь буферизируется по строкам вместо полной буферизации.Примечание
Для записи или чтения двоичных данных из/в стандартные потоки используйте базовый двоичный объект
buffer
. Например, для записи байтов вstdout
используйтеsys.stdout.buffer.write(b'abc')
.Однако если вы пишете библиотеку (и не контролируете, в каком контексте будет выполняться ее код), имейте в виду, что стандартные потоки могут быть заменены файлоподобными объектами типа
io.StringIO
, которые не поддерживают атрибутbuffer
.
-
sys.
__stdin__
¶ -
sys.
__stdout__
¶ -
sys.
__stderr__
¶ Эти объекты содержат исходные значения
stdin
,stderr
иstdout
в начале программы. Они используются во время финализации и могут быть полезны для печати в реальный стандартный поток независимо от того, был ли перенаправлен объектsys.std*
.Его также можно использовать для восстановления фактических файлов в известные рабочие файловые объекты в случае, если они были перезаписаны сломанным объектом. Однако предпочтительным способом является явное сохранение предыдущего потока перед его заменой и восстановление сохраненного объекта.
Примечание
При некоторых условиях
stdin
,stdout
иstderr
, а также исходные значения__stdin__
,__stdout__
и__stderr__
могут бытьNone
. Обычно это касается приложений Windows GUI, не подключенных к консоли, и приложений Python, запускаемых с помощью pythonw.
-
sys.
stdlib_module_names
¶ Набор строк, содержащих имена модулей стандартной библиотеки.
Он одинаков для всех платформ. Также перечислены модули, недоступные на некоторых платформах, и модули, отключенные при сборке Python. Перечислены все виды модулей: чистый Python, встроенные, замороженные и модули расширения. Тестовые модули исключены.
Для пакетов перечисляется только основной пакет: подпакеты и подмодули не перечисляются. Например, пакет
email
указан, но подпакетemail.mime
и подмодульemail.message
не указаны.См. также список
sys.builtin_module_names
.Добавлено в версии 3.10.
-
sys.
thread_info
¶ named tuple, содержащий информацию о реализации потока.
Атрибут
Пояснение
name
Имя реализации потока:
'nt'
: Потоки Windows'pthread'
: POSIX-потоки'solaris'
: потоки Solaris
lock
Имя реализации блокировки:
'semaphore'
: блокировка использует семафор'mutex+cond'
: блокировка использует мьютекс и переменную условияNone
если эта информация неизвестна
Имя и версия библиотеки потоков. Это строка, или
None
, если эта информация неизвестна.Добавлено в версии 3.3.
-
sys.
tracebacklimit
¶ Когда эта переменная имеет целочисленное значение, она определяет максимальное количество уровней информации об обратном прослеживании, выводимой при возникновении необработанного исключения. По умолчанию установлено значение
1000
. Если установлено значение0
или меньше, вся информация об обратной связи подавляется и печатается только тип и значение исключения.
-
sys.
unraisablehook
(unraisable, /)¶ Обработка неустранимого исключения.
Вызывается, когда произошло исключение, но у Python нет возможности его обработать. Например, когда деструктор вызывает исключение или во время сборки мусора (
gc.collect()
).Аргумент unraisable имеет следующие атрибуты:
exc_type: Тип исключения.
exc_value: Значение исключения, может быть
None
.exc_traceback: Отслеживание исключения, может быть
None
.err_msg: Сообщение об ошибке, может быть
None
.объект: Объект, вызвавший исключение, может быть
None
.
Хук по умолчанию форматирует err_msg и object как:
f'{err_msg}: {object!r}'
; используйте сообщение об ошибке «Exception ignored in», если err_msg равноNone
.sys.unraisablehook()
может быть переопределена для управления обработкой невыводимых исключений.Хранение exc_value с помощью пользовательского хука может создать цикл ссылок. Его следует явно очистить, чтобы разорвать цикл ссылок, когда исключение больше не нужно.
Хранение object с помощью пользовательского хука может воскресить его, если он установлен на объект, который завершается. Избегайте хранения object после завершения работы пользовательского хука, чтобы избежать воскрешения объектов.
См. также
excepthook()
, который обрабатывает не пойманные исключения.Вызывает auditing event
sys.unraisablehook
с аргументамиhook
,unraisable
.Добавлено в версии 3.8.
-
sys.
version
¶ Строка, содержащая номер версии интерпретатора Python плюс дополнительную информацию о номере сборки и используемом компиляторе. Эта строка отображается при запуске интерактивного интерпретатора. Не извлекайте из нее информацию о версии, лучше используйте
version_info
и функции, предоставляемые модулемplatform
.
-
sys.
api_version
¶ Версия C API для данного интерпретатора. Программисты могут найти это полезным при отладке конфликтов версий между Python и модулями расширения.
-
sys.
version_info
¶ Кортеж, содержащий пять компонентов номера версии: major, minor, micro, releaselevel и serial. Все значения, кроме releaselevel, являются целыми числами; уровень выпуска -
'alpha'
,'beta'
,'candidate'
или'final'
. Значениеversion_info
, соответствующее версии Python 2.0, равно(2, 0, 0, 'final', 0)
. К компонентам также можно обращаться по имени, поэтомуsys.version_info[0]
эквивалентноsys.version_info.major
и так далее.Изменено в версии 3.1: Добавлены именованные атрибуты компонентов.
-
sys.
warnoptions
¶ Это деталь реализации фреймворка предупреждений; не изменяйте это значение. Дополнительную информацию о системе предупреждений см. в модуле
warnings
.
-
sys.
winver
¶ Номер версии, используемый для формирования ключей реестра на платформах Windows. Хранится как строковый ресурс 1000 в библиотеке Python DLL. Обычно это значение представляет собой первые три символа
version
. Оно предоставляется в модулеsys
в информационных целях; изменение этого значения не влияет на ключи реестра, используемые Python.Availability: 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 implementation detail: Это специфический для CPython способ доступа к опциям, переданным через
-X
. Другие реализации могут экспортировать их другими способами или не экспортировать вообще.Добавлено в версии 3.2.
Цитаты
- C99
ISO/IEC 9899:1999. «Языки программирования – C». Публичный проект этого стандарта доступен по адресу https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf.