Spec-Zone.ru › Python 2.7

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

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

sys.argv

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

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

sys.byteorder

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

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

sys.builtin_module_names

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

sys.call_tracing(func, args)

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

sys.copyright

Строка, содержащая авторское право, относящееся к интерпретатору Python.

sys._clear_type_cache()

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

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

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

sys._current_frames()

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

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

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

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

sys.dllhandle

Целое число, определяющее дескриптор DLL Python. Доступность: Windows.

sys.displayhook(value)

Если значение не None, эта функция выводит его в sys.stdout, и сохраняет его в __builtin__._.

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

sys.dont_write_bytecode

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

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

sys.excepthook(type, value, traceback)

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

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

sys.__displayhook__
sys.__excepthook__

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

sys.exc_info()

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

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

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

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

Предупреждение

Присваивание значения возврата стек_следов локальной переменной в функции, обрабатывающей исключение, приведет к циклической ссылке. Это предотвратит сборку мусора для всего, что ссылается на локальную переменную в той же функции или на объект стека следов. Поскольку большинству функций не нужен доступ к стеку следов, лучшим решением является использование чего-то вроде exctype, value = sys.exc_info()[:2] для извлечения только типа и значения исключения. Если вам нужен стек следов, убедитесь, что вы удалили его после использования (лучше всего с помощью оператора try … finally) или вызовите exc_info() в функции, которая сама по себе не обрабатывает исключение.

Примечание

Начиная с Python 2.2, такие циклы автоматически освобождаются при включенном сборе мусора, когда они становятся недоступными, но остается более эффективным избегать их создания.

sys.exc_clear()

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

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

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

sys.exc_type
sys.exc_value
sys.exc_traceback

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

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

END_OF_DOCUMENT_MARKER
sys.exec_prefix

Строка, задающая префикс каталога, специфичный для сайта, где установлены платформенно-зависимые файлы Python; по умолчанию это также '/usr/local'. Это можно установить во время сборки с помощью аргумента --exec-prefix скрипта configure. В частности, все файлы конфигурации (например, заголовочный файл pyconfig.h) устанавливаются в каталоге exec_prefix/lib/pythonX.Y/config, а модули общих библиотек устанавливаются в exec_prefix/lib/pythonX.Y/lib-dynload, где X.Y — номер версии Python, например 2.7.

sys.executable

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

sys.exit([arg])

Выход из Python. Это реализуется путём повышения исключения SystemExit, поэтому действия по очистке, указанные в блоках finally инструкций try, выполняются, и есть возможность перехватить попытку выхода на внешнем уровне.

Необязательный аргумент arg может быть целым числом, задающим код завершения (по умолчанию ноль), или другим типом объекта. Если это целое число, ноль считается «успешным завершением», а любое ненулевое значение считается «ненормальным завершением» оболочками и т. п. Большинство систем требуют, чтобы оно было в диапазоне 0–127, а в противном случае результаты будут неопределёнными. Некоторые системы имеют соглашение об определении конкретных значений для определённых кодов завершения, но они обычно не развиты; программы Unix обычно используют 2 для ошибок синтаксиса командной строки и 1 для всех других видов ошибок. Если передаётся другой тип объекта, None эквивалентно передаче нуля, а любой другой объект печатается в stderr и приводит к коду завершения 1. В частности, sys.exit("some error message") — это быстрый способ завершить программу при возникновении ошибки.

Так как exit() в конечном итоге «только» поднимает исключение, он будет выходить из процесса только при вызове из основного потока, и исключение не перехватывается.

sys.exitfunc

Это значение фактически не определено модулем, но может быть установлено пользователем (или программой) для задания действия по очистке при выходе программы. При установке это должна быть безаргументная функция. Эта функция будет вызвана при выходе интерпретатора. В этом способе может быть установлена только одна функция; для того, чтобы разрешить несколько функций, которые будут вызываться при завершении, используйте модуль atexit.

Примечание

Функция выхода не вызывается, когда программа убивается сигналом, когда обнаружена внутренняя ошибка Python, или когда os._exit() вызывается.

Устарело начиная с версии 2.4: Используйте atexit вместо этого.

sys.flags

Последовательность структур flags отображает состояние флагов командной строки. Атрибуты только для чтения.

атрибут

флаг

debug

-d

py3k_warning

-3

division_warning

-Q

division_new

-Qnew

inspect

-i

interactive

-i

optimize

-O или -OO

dont_write_bytecode

-B

no_user_site

-s

no_site

-S

ignore_environment

-E

tabcheck

-t или -tt

verbose

-v

unicode

-U

bytes_warning

-b

hash_randomization

-R

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

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

sys.float_info

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

атрибут

макрос float.h

объяснение

epsilon

DBL_EPSILON

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

dig

DBL_DIG

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

mant_dig

DBL_MANT_DIG

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

max

DBL_MAX

максимальное представимое конечное float

max_exp

DBL_MAX_EXP

максимальное целое число e такое, что radix**(e-1) является представимым конечным float

max_10_exp

DBL_MAX_10_EXP

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

min

DBL_MIN

минимальное положительное нормализованное float

min_exp

DBL_MIN_EXP

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

min_10_exp

DBL_MIN_10_EXP

минимальное целое число e такое, что 10**e — нормализованное float

radix

FLT_RADIX

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

rounds

FLT_ROUNDS

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

Атрибут sys.float_info.dig требует дальнейших объяснений. Если s — любая строка, представляющая десятичное число с не более чем sys.float_info.dig значащими цифрами, то преобразование s в float и обратно восстановит строку, представляющую то же десятичное значение:

>>> import sys
>>> sys.float_info.dig
15
>>> s = '3.14159265358979'    # decimal string with 15 significant digits
>>> format(float(s), '.15g')  # convert to float and back -> same value
'3.14159265358979'

Но для строк с более чем sys.float_info.dig значащими цифрами это не всегда верно:

>>> s = '9876543211234567'    # 16 significant digits is too many!
>>> format(float(s), '.16g')  # conversion changes value
'9876543211234568'

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

sys.float_repr_style

Строка, указывающая, как функция repr() ведет себя для чисел с плавающей точкой. Если строка имеет значение 'short', то для конечного числа с плавающей точкой x, функция repr(x) стремится произвести короткую строку с тем свойством, что float(repr(x)) == x. Это обычное поведение в Python 2.7 и более поздних версиях. В противном случае, float_repr_style имеет значение 'legacy' и repr(x) ведет себя так же, как и в версиях Python до 2.7.

Новая в версии 2.7.

sys.getcheckinterval()

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

Новая в версии 2.3.

sys.getdefaultencoding()

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

Новая в версии 2.0.

sys.getdlopenflags()

Возвращает текущее значение флагов, используемых для dlopen() вызовов. Постоянные флаги определены в модулях dl и DLFCN. Доступность: Unix.

Новая в версии 2.2.

sys.getfilesystemencoding()

Возвращает имя кодирования, используемого для преобразования имен файлов Unicode в имена файлов системы, или None, если используется системное кодирование по умолчанию. Результат зависит от операционной системы:

  • В Mac OS X кодирование равно 'utf-8'.
  • В Unix кодирование — это предпочтение пользователя в соответствии с результатом nl_langinfo(CODESET), или None, если nl_langinfo(CODESET) не удалось.
  • В Windows NT+, имена файлов являются Unicode по умолчанию, поэтому преобразование не выполняется. getfilesystemencoding() все равно возвращает 'mbcs', так как это кодирование, которое приложения должны использовать, когда они явно хотят преобразовать строки Unicode в строки байтов, которые эквивалентны при использовании в качестве имён файлов.
  • В Windows 9x кодирование равно 'mbcs'.

Новая в версии 2.3.

sys.getrefcount(object)

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

sys.getrecursionlimit()

Возвращает текущее значение предела рекурсии, максимальную глубину стека интерпретатора Python. Этот предел предотвращает бесконечную рекурсию, которая может привести к переполнению стека C и аварийному завершению работы Python. Его можно установить с помощью setrecursionlimit().

sys.getsizeof(object[, default])

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

Если задан, default будет возвращён, если объект не предоставляет средства для получения размера. В противном случае будет поднята ошибка TypeError.

getsizeof() вызывает метод __sizeof__ объекта и добавляет дополнительную нагрузку сборщика мусора, если объект управляется сборщиком мусора.

Новая в версии 2.6.

sys._getframe([depth])

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

Подробность реализации CPython: Эта функция должна использоваться только для внутренних и специализированных целей. Она не гарантируется в всех реализациях Python.

sys.getprofile()

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

Новая в версии 2.6.

sys.gettrace()

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

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

Новая в версии 2.6.

sys.getwindowsversion()

Возвращает кортеж с именами, описывающий текущую версию Windows. Имена элементов: major, minor, build, platform, service_pack, service_pack_minor, service_pack_major, suite_mask и product_type. service_pack содержит строку, а все остальные значения — целые числа. К компонентам также можно получить доступ по имени, поэтому sys.getwindowsversion()[0] эквивалентно sys.getwindowsversion().major. Для совместимости с предыдущими версиями доступны только первые 5 элементов по индексации.

platform может принимать следующие значения:

Постоянная

Платформа

0 (VER_PLATFORM_WIN32s)

Win32s в Windows 3.1

1 (VER_PLATFORM_WIN32_WINDOWS)

Windows 95/98/ME

2 (VER_PLATFORM_WIN32_NT)

Windows NT/2000/XP/x64

3 (VER_PLATFORM_WIN32_CE)

Windows CE

product_type может принимать следующие значения:

Постоянная

Значение

1 (VER_NT_WORKSTATION)

Система — рабочая станция.

2 (VER_NT_DOMAIN_CONTROLLER)

Система — контроллер домена.

3 (VER_NT_SERVER)

Система — сервер, но не контроллер домена.

Эта функция оборачивает функцию Win32 GetVersionEx(); для получения дополнительной информации об этих полях см. документацию Microsoft по OSVERSIONINFOEX().

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

Новая в версии 2.3.

Изменено в версии 2.7: Изменено на кортеж с именами и добавлены service_pack_minor, service_pack_major, suite_mask и product_type.

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

Значение hexversion — 32-битное число со следующей структурой:

Биты (строка big endian)

Значение

1-8

PY_MAJOR_VERSION (число 2 в 2.1.0a3)

9-16

PY_MINOR_VERSION (число 1 в 2.1.0a3)

17-24

PY_MICRO_VERSION (число 0 в 2.1.0a3)

25-28

PY_RELEASE_LEVEL (0xA для альфа-версий, 0xB для бета-версий, 0xC для кандидатов в релиз и 0xF для финальной версии)

29-32

PY_RELEASE_SERIAL (число 3 в 2.1.0a3, ноль для финальных релизов)

Таким образом, 2.1.0a3 — это шестнадцатеричная версия 0x020100a3.

Новая в версии 1.5.2.

END_OF_DOCUMENT_MARKER
sys.long_info

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

Атрибут

Описание

bits_per_digit

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

sizeof_digit

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

Новая в версии 2.7.

sys.last_type
sys.last_value
sys.last_traceback

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

Значение переменных совпадает со значениями возвращаемых результатов из exc_info() выше. (Поскольку существует только один интерактивный поток, безопасность потоков для этих переменных не является проблемой, в отличие от exc_type и т. д.)

sys.maxint

Наибольшее положительное целое число, поддерживаемое регулярным типом целых чисел Python. Это как минимум 2**31-1. Наибольшее отрицательное целое число — -maxint-1 — асимметрия возникает из-за использования двоичной арифметики со знаком дополнения до 2.

sys.maxsize

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

sys.maxunicode

Целое число, задающее наибольший поддерживаемый код для символа Юникод. Значение зависит от параметра конфигурации, который определяет, хранятся ли символы Юникода в формате UCS-2 или UCS-4.

sys.meta_path

Список объектов-«поисковиков», чьи методы find_module() вызываются для проверки, может ли один из объектов найти модуль для импорта. Метод find_module() вызывается как минимум с абсолютным именем импортируемого модуля. Если импортируемый модуль содержится в пакете, то атрибут родительского пакета __path__ передаётся в качестве второго аргумента. Метод возвращает None если модуль не найден, иначе возвращает «загрузчик».

sys.meta_path проверяется до явных модулей-поисковиков или sys.path.

См. PEP 302 для первоначального описания.

sys.modules

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

sys.path

Список строк, указывающий путь поиска модулей. Инициализируется из переменной среды PYTHONPATH, а также установки зависимого по умолчанию.

При запуске программы первым элементом этого списка, path[0], является каталог, содержащий сценарий, который использовался для вызова интерпретатора Python. Если каталог сценария недоступен (например, если интерпретатор вызывается интерактивно или если сценарий считывается из стандартного ввода), path[0] является пустой строкой, что указывает Python на поиск модулей в текущем каталоге в первую очередь. Обратите внимание, что каталог сценария вставляется перед записями, добавленными в результате PYTHONPATH.

Программа свободна изменять этот список по своему усмотрению.

Изменено в версии 2.3: Строки Юникод больше не игнорируются.

См. также

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

sys.path_hooks

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

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

sys.path_importer_cache

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

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

sys.platform

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

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

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

Изменено в версии 2.7.3: Поскольку много кода проверяет sys.platform == 'linux2', и между Linux 2.x и 3.x нет существенных изменений, sys.platform всегда устанавливается в 'linux2', даже на Linux 3.x. В Python 3.3 и более поздних версиях значение всегда устанавливается в 'linux', поэтому рекомендуется всегда использовать приведенный выше фрагмент кода startswith.

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

Система

Значение platform

Linux (2.x и 3.x)

'linux2'

Windows

'win32'

Windows/Cygwin

'cygwin'

Mac OS X

'darwin'

OS/2

'os2'

OS/2 EMX

'os2emx'

RiscOS

'riscos'

AtheOS

'atheos'

См. также

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

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

sys.prefix

Строка, содержащая префикс каталога, специфичного для сайта, где установлены независимые от платформы файлы Python; по умолчанию это строка '/usr/local'. Это можно установить во время компиляции, используя аргумент --prefix для скрипта configure. Основное хранилище модулей библиотеки Python устанавливается в каталог prefix/lib/pythonX.Y, а независимые от платформы заголовочные файлы (кроме pyconfig.h) хранятся в prefix/include/pythonX.Y, где X.Y — номер версии Python, например 2.7.

END_OF_DOCUMENT_MARKER
sys.ps1
sys.ps2

Строки, определяющие первичный и вторичный приглашения интерпретатора. Они определяются только если интерпретатор в интерактивном режиме. Их начальные значения в этом случае — '>>> ' и '... '. Если нестроковый объект присваивается любой из переменных, его str() переоценивается каждый раз, когда интерпретатор готов прочитать новую интерактивную команду; это можно использовать для реализации динамического приглашения.

sys.py3kwarning

Булево значение, содержащее состояние флага предупреждения Python 3. Оно равно True при запуске Python с опцией -3. (Это следует рассматривать как только для чтения; изменение его значения не влияет на предупреждения Python 3.)

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

sys.setcheckinterval(interval)

Установить «интервал проверки» интерпретатора. Это целочисленное значение определяет, как часто интерпретатор проверяет периодические вещи, такие как переключение потоков и обработчики сигналов. Значение по умолчанию — 100, что означает, что проверка выполняется каждые 100 виртуальных инструкций Python. Увеличение этого значения может повысить производительность программ, использующих потоки. Установка значения <= 0 проверяет каждую виртуальную инструкцию, максимизируя отзывчивость и накладные расходы.

sys.setdefaultencoding(name)

Установить текущее кодирование по умолчанию для строк, используемое реализацией Unicode. Если name не соответствует ни одному из доступных кодирований, генерируется LookupError. Эта функция предназначена только для использования реализацией модуля site и, при необходимости, для sitecustomize. После использования модулем site она удаляется из пространства имен модуля sys.

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

sys.setdlopenflags(n)

Установить флаги, используемые интерпретатором для вызовов dlopen(), таких как при загрузке расширенных модулей. Среди прочего, это позволит выполнить ленивое разрешение символов при импорте модуля, если вызвать как sys.setdlopenflags(0). Для совместного использования символов между расширенными модулями вызовите как sys.setdlopenflags(dl.RTLD_NOW | dl.RTLD_GLOBAL). Символьные имена модулей флагов можно найти в модуле dl или в модуле DLFCN. Если DLFCN недоступен, он может быть сгенерирован из /usr/include/dlfcn.h с помощью скрипта h2py. Доступность: Unix.

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

sys.setprofile(profilefunc)

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

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

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

'call'

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

'return'

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

'c_call'

Вызывается функция C. Это может быть расширенная функция или встроенная. arg — объект функции C.

'c_return'

Функция C возвращает управление. arg — объект функции C.

'c_exception'

Функция C вызвала исключение. arg — объект функции C.

sys.setrecursionlimit(limit)

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

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

sys.settrace(tracefunc)

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

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

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

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

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

'call'

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

'line'

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

'return'

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

'exception'

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

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

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

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

sys.settscdump(on_flag)

Активировать выгрузку измерений виртуальной машины с использованием счётчика временных меток Pentium, если on_flag имеет значение true. Деактивировать эти выгрузки, если on_flag имеет значение false. Функция доступна только если Python был скомпилирован с --with-tsc. Чтобы понять вывод этой выгрузки, обратитесь к Python/ceval.c в исходных текстах Python.

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

Подробность реализации CPython: Эта функция тесно связана с деталями реализации CPython и поэтому, скорее всего, не будет реализована в других интерпретаторах.

sys.stdin
sys.stdout
sys.stderr

Объекты файлов, соответствующие стандартным потокам ввода, вывода и ошибок интерпретатора. stdin используется для всего ввода интерпретатора, кроме скриптов, но включая вызовы input() и raw_input(). stdout используется для вывода print и операторов выражения, а также для подсказок input() и raw_input(). Собственные подсказки интерпретатора и (почти все) его сообщения об ошибках отправляются в stderr. stdout и stderr не обязательно должны быть встроенными объектами файлов: любой объект приемлем, если у него есть метод write(), принимающий строковый аргумент. (Изменение этих объектов не влияет на стандартные потоки ввода-вывода процессов, выполняемых с помощью os.popen(), os.system() или семейства функций exec*() в модуле os.)

sys.__stdin__
sys.__stdout__
sys.__stderr__

Эти объекты содержат исходные значения stdin, stderr и stdout в начале программы. Они используются во время завершения и могут быть полезны для вывода в фактический стандартный поток, независимо от того, был ли перенаправлен объект sys.std*.

Это также может быть использовано для восстановления фактических файлов до известных рабочих объектов файлов в случае их перезаписи нерабочим объектом. Однако предпочтительный способ сделать это — явно сохранить предыдущий поток перед его заменой и восстановить сохраненный объект.

sys.subversion

Тройка (repo, branch, version), представляющая информацию Subversion интерпретатора Python. repo — имя хранилища, 'CPython'. branch — строка одного из форматов 'trunk', 'branches/name' или 'tags/name'. version — результат svnversion, если интерпретатор был построен из Subversion checkout; он содержит номер (диапазон) ревизии и, возможно, конечный символ ‘M’, если были местные изменения. Если дерево было экспортировано (или svnversion был недоступен), это ревизия Include/patchlevel.h, если ветка является тегом. В противном случае это None.

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

Примечание

Python теперь разрабатывается с использованием Git. Поэтому в последних исправлениях Python 2.7, subversion содержит заполнительную информацию. Он удален в Python 3.3.

sys.tracebacklimit

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

sys.version

Строка, содержащая номер версии интерпретатора Python плюс дополнительную информацию о номере сборки и используемом компиляторе. Эта строка отображается при запуске интерактивного интерпретатора. Не извлекайте информацию о версии из неё, вместо этого используйте version_info и функции, предоставляемые модулем platform.

sys.api_version

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

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

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 и так далее.

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

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

sys.warnoptions

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

sys.winver

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

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

C99

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

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

Spec-Zone.ru

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