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