Spec-Zone.ru › Python 3.11

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

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

sys.abiflags

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

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

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

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

Встроенный эквивалент этой функции — PySys_Audit(). При возможности предпочтительнее использовать встроенную функцию.

См. таблицу аудиторных событий для всех событий, генерируемых CPython.

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

sys.base_exec_prefix

Устанавливается во время запуска Python, до выполнения site.py, в то же значение, что и exec_prefix. Если работа не ведется в виртуальной среде, значения остаются неизменными; если site.py обнаружит, что используется виртуальная среда, значения prefix и exec_prefix будут изменены для указания на виртуальную среду, в то время как base_prefix и base_exec_prefix останутся указателями на базовую установку Python (той, из которой была создана виртуальная среда).

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

sys.base_prefix

Устанавливается во время запуска Python, до выполнения site.py, в то же значение, что и prefix. Если работа не ведется в виртуальной среде, значения остаются неизменными; если site.py обнаружит, что используется виртуальная среда, значения prefix и exec_prefix будут изменены для указания на виртуальную среду, в то время как base_prefix и base_exec_prefix останутся указателями на базовую установку Python (той, из которой была создана виртуальная среда).

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

sys.byteorder

Указатель родного порядка байтов. Имеет значение 'big' на платформах с big-endian (старший байт первым), и 'little' на платформах с little-endian (младший байт первым).

sys.builtin_module_names

Кортеж строк, содержащий имена всех модулей, скомпилированных в эту интерпретацию Python. (Эта информация недоступна никаким другим способом — modules.keys() перечисляет только импортированные модули.)

См. также список sys.stdlib_module_names.

sys.call_tracing(func, args)

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

Отслеживание приостанавливается во время вызова функции отслеживания, установленной с помощью settrace() или setprofile(), чтобы избежать бесконечной рекурсии. call_tracing() позволяет явную рекурсию функции отслеживания.

sys.copyright

Строка, содержащая информацию об авторских правах на интерпретатор Python.

sys._clear_type_cache()

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

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

sys._current_frames()

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

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

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

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

sys._current_exceptions()

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

Это наиболее полезно для статистического профилирования.

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

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

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

Строка среды выполнения, например, пользовательский агент браузера, 'Node.js v14.18.2', или 'UNKNOWN'.

_emscripten_info.pthreads

True если Python был скомпилирован с поддержкой Emscripten pthreads.

_emscripten_info.shared_memory

True если Python был скомпилирован с поддержкой общей памяти.

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

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

sys.pycache_prefix

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

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

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

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

END_OF_DOCUMENT_MARKER
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()

Эта функция возвращает представление исключения в старом стиле. Если исключение e в настоящее время обрабатывается (поэтому 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

-d

flags.inspect

-i

flags.interactive

-i

flags.isolated

-I

flags.optimize

-O или -OO

flags.dont_write_bytecode

-B

flags.no_user_site

-s

flags.no_site

-S

flags.ignore_environment

-E

flags.verbose

-v

flags.bytes_warning

-b

flags.quiet

-q

flags.hash_randomization

-R

flags.dev_mode

-X dev (Режим разработки Python)

flags.utf8_mode

-X utf8

flags.safe_path

-P

flags.int_max_str_digits

-X int_max_str_digits (Предел длины строки целого числа при преобразовании)

flags.warn_default_encoding

-X warn_default_encoding

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

Введено в версии 3.2.3: Атрибут hash_randomization.

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

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

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

Изменено в версии 3.10: Добавлен атрибут warn_default_encoding для флага -X warn_default_encoding.

Изменено в версии 3.11: Добавлен атрибут safe_path для опции -P.

Изменено в версии 3.11: Добавлен атрибут int_max_str_digits.

sys.float_info

A именованный кортеж содержащий информацию о типе 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() ведёт себя для float. Если строка имеет значение 'short' , то для конечного float x, repr(x) стремится произвести короткую строку с свойством, что float(repr(x)) == x. Это обычное поведение в Python 3.1 и более поздних версиях. В противном случае, float_repr_style имеет значение 'legacy' и repr(x) ведёт себя так же, как и в версиях Python до 3.1.

New in version 3.1.

sys.getallocatedblocks()

Возвращает количество блоков памяти, выделенных интерпретатором в данный момент, независимо от их размера. Эта функция в основном полезна для отслеживания и отладки утечек памяти. Из-за внутренних кэшей интерпретатора результат может меняться от вызова к вызову; вам может потребоваться вызвать _clear_type_cache() и gc.collect(), чтобы получить более предсказуемые результаты.

Если Python-сборка или реализация не может разумно вычислить эту информацию, getallocatedblocks() может вернуть 0 вместо этого.

New in version 3.4.

sys.getandroidapilevel()

Возвращает версию API Android, определённую во время сборки, как целое число.

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

New in version 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)

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

Обратите внимание, что возвращаемое значение может не отражать фактическое количество ссылок на объект. Следовательно, не полагайтесь на точность возвращаемого значения, за исключением значений 0 или 1.

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

Получить функцию профилирования, установленную с помощью setprofile().

sys.gettrace()

Получить функцию отслеживания, установленную с помощью settrace().

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

END_OF_DOCUMENT_MARKER ```
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

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

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(). Именованный кортеж named tuple sys.version_info может быть использован для более удобного представления той же информации.

Дополнительные сведения о hexversion можно найти в Версионирование API и ABI.

sys.implementation

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

name — идентификатор реализации, например, 'cpython'. Фактическая строка определяется реализацией Python, но гарантируется, что она будет в нижнем регистре.

version — именованный кортеж, в том же формате, что и sys.version_info. Представляет версию реализации Python. Имеет отличное значение от конкретной версии языка Python, которому соответствует текущая интерпретация, которую sys.version_info представляет. Например, для PyPy 1.8 sys.implementation.version может быть sys.version_info(1, 8, 0, 'final', 0), тогда как sys.version_info будет sys.version_info(2, 7, 2, 'final', 0). Для CPython они имеют одинаковое значение, так как это эталонная реализация.

hexversion — версия реализации в шестнадцатеричном формате, как в sys.hexversion.

cache_tag — тег, используемый механизмом импорта в именах файлов кэшированных модулей. По соглашению, это будет составной частью имени реализации и версии, например, 'cpython-33'. Однако реализация Python может использовать другое значение, если это уместно. Если cache_tag установлено в None, это указывает на то, что кеширование модулей должно быть отключено.

sys.implementation может содержать дополнительные атрибуты, специфичные для реализации Python. Эти нестандартные атрибуты должны начинаться с подчеркивания и здесь не описаны. Независимо от своего содержимого, sys.implementation не будет изменяться во время выполнения интерпретатора и между версиями реализации. (Однако может измениться между версиями языка Python.) Для получения дополнительной информации см. PEP 421.

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

Примечание

Добавление новых требуемых атрибутов должно проходить через обычный процесс PEP. Для получения дополнительной информации см. PEP 421.

sys.int_info

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_finalizing()

Возвращает True, если интерпретатор Python завершается, False в противном случае.

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

sys.last_type
sys.last_value
sys.last_traceback

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

Значение переменных совпадает со значениями, возвращаемыми из exc_info() выше.

sys.maxsize

Целое число, задающее максимальное значение, которое может принимать переменная типа Py_ssize_t. Обычно это 2**31 - 1 на 32-битной платформе и 2**63 - 1 на 64-битной платформе.

sys.maxunicode

Целое число, дающее значение наибольшего кодового пункта Юникода, т. е. 1114111 (0x10FFFF в шестнадцатеричном формате).

Изменено в версии 3.3: До PEP 393, sys.maxunicode обычно составляло 0xFFFF или 0x10FFFF, в зависимости от параметра конфигурации, определяющего, хранятся ли символы Юникода как UCS-2 или UCS-4.

sys.meta_path

Список объектов поисковиков мета-пути, методы find_spec() которых вызываются, чтобы определить, может ли какой-либо из объектов найти импортируемый модуль. По умолчанию содержит записи, реализующие стандартные семантики импорта Python. Метод find_spec() вызывается по крайней мере с абсолютным именем импортируемого модуля. Если импортируемый модуль находится в пакете, то атрибут __path__ родительского пакета передается в качестве второго аргумента. Метод возвращает спецификацию модуля или None если модуль не найден.

См. также

importlib.abc.MetaPathFinder

Абстрактный базовый класс, определяющий интерфейс объектов-поисковиков в meta_path.

importlib.machinery.ModuleSpec

Конкретный класс, экземпляры которого должен возвращать метод find_spec().

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

sys.modules

Это словарь, сопоставляющий имена модулей с уже загруженными модулями. Его можно изменять, чтобы принудительно перезагрузить модули и выполнить другие действия. Однако замена словаря не обязательно будет работать как ожидается, а удаление существенных элементов из словаря может привести к сбоям в работе Python. Если вы хотите выполнить итерацию по этому глобальному словарю, всегда используйте sys.modules.copy() или tuple(sys.modules) для предотвращения исключений, так как его размер может изменяться во время итерации в качестве побочного эффекта кода или активности в других потоках.

sys.orig_argv

Список исходных аргументов командной строки, переданных исполняемому файлу Python.

См. также 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 должны добавляться только строки; все другие типы данных игнорируются во время импорта.

См. также

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

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

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

sys.path_importer_cache

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

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

Изменено в версии 3.3: None хранится вместо imp.NullImporter в случае отсутствия поисковика.

sys.platform

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

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

if sys.platform.startswith('freebsd'):
    # FreeBSD-specific code here...
elif sys.platform.startswith('linux'):
    # Linux-specific code here...
elif sys.platform.startswith('aix'):
    # AIX-specific code here...

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

Система

platform значение

AIX

'aix'

Emscripten

'emscripten'

Linux

'linux'

WASI

'wasi'

Windows

'win32'

Windows/Cygwin

'cygwin'

macOS

'darwin'

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

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

См. также

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

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

sys.platlibdir

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

На большинстве платформ он равен "lib". На Fedora и SuSE на 64-битных платформах он равен "lib64", что даёт следующие пути sys.path, где X.Y это версия Python major.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. См. Пути установки для выведенных путей.

Примечание

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

Дополнительную информацию об объектах кода и фреймов можно найти в Иерархии стандартных типов.

Возбуждает событие аудита sys.settrace без аргументов.

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

Изменено в версии 3.7: 'opcode' добавлен тип события; f_trace_lines и f_trace_opcodes добавлены в атрибуты фреймов

sys.set_asyncgen_hooks(firstiter, finalizer)

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

Возбуждает событие аудита sys.set_asyncgen_hooks_firstiter без аргументов.

Возбуждает событие аудита sys.set_asyncgen_hooks_finalizer без аргументов.

Два события аудита возбуждаются, потому что базовая API состоит из двух вызовов, каждый из которых должен возбудить свое событие.

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

Примечание

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

sys.set_coroutine_origin_tracking_depth(depth)

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

Для включения передайте значение depth больше нуля; это задаёт количество фреймов, информация о которых будет захвачена. Для отключения передайте depth равным нулю.

Это настройка, специфичная для потока.

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

Примечание

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

sys._enablelegacywindowsfsencoding()

Изменяет кодировку и обработчик ошибок файловой системы на ‘mbcs’ и ‘replace’ соответственно, для согласованности с версиями Python до 3.6.

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

См. также sys.getfilesystemencoding() и sys.getfilesystemencodeerrors().

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

Введено в версии 3.6: См. PEP 529 для получения дополнительных сведений.

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 или используя новый -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

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

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

Версия C API для этого интерпретатора. Программисты могут найти это полезным при отладке конфликтов версий между Python и модулями расширений.

sys.version_info

Кортеж, содержащий пять компонентов номера версии: major, minor, micro, releaselevel и serial. Все значения, кроме releaselevel, являются целыми числами; уровень выпуска это 'alpha', 'beta', 'candidate', или 'final'. Значение version_info соответствующее версии Python 2.0 это (2, 0, 0, 'final', 0). Компоненты также могут быть доступны по имени, поэтому sys.version_info[0] эквивалентно sys.version_info.major и так далее.

Изменено в версии 3.1: Добавлены атрибуты имени компонента.

sys.warnoptions

Это деталь реализации фреймворка предупреждений; не изменяйте это значение. Обратитесь к модулю warnings для получения дополнительной информации о фреймворке предупреждений.

sys.winver

Номер версии, используемый для формирования ключей реестра на платформах Windows. Это хранится как строковый ресурс 1000 в DLL Python. Значение обычно является основными и второстепенными версиями работающего интерпретатора Python. Он предоставляется в модуле sys для информационных целей; изменение этого значения не влияет на ключи реестра, используемые Python.

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

sys._xoptions

Словарь различных флагов, специфичных для реализации, переданных через параметр командной строки -X. Имена параметров либо отображаются на их значения, если они заданы явно, либо на True. Пример:

$ ./python -Xa=b -Xc
Python 3.2a3+ (py3k, Oct 16 2010, 20:14:50)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys._xoptions
{'a': 'b', 'c': True}

Деталь реализации CPython: Это CPython-специфический способ доступа к параметрам, переданным через параметр командной строки -X. Другие реализации могут экспортировать их другими способами или не экспортировать вообще.

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

Список литературы

C99

ISO/IEC 9899:1999. «Языки программирования – C». Публичный проект этого стандарта доступен по адресу https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf.

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

Spec-Zone.ru

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