Содержание страницы
platform – Доступ к идентификационным данным базовой платформы¶platform – Access to underlying platform’s identifying data
Исходный код: Lib/platform.py
Примечание
Конкретные платформы перечислены в алфавитном порядке, Linux включён в раздел Unix.
Кросс-платформенные¶Cross platform
- platform.architecture(executable=sys.executable, bits='', linkage='')¶
Запрашивает у указанного исполняемого файла (по умолчанию – двоичный файл интерпретатора Python) различные сведения об архитектуре.
Возвращает кортеж
(bits, linkage), содержащий информацию о битовой архитектуре и формате компоновки, используемом для исполняемого файла. Оба значения возвращаются в виде строк.Значения, которые не удаётся определить, возвращаются в соответствии с настройками параметров по умолчанию. Если bits задан как
'', тоsizeof(pointer)(илиsizeof(long)для Python версии < 1.5.2) используется как показатель поддерживаемого размера указателя.Функция использует системную команду
fileдля выполнения работы. Она доступна на большинстве (если не на всех) Unix-платформ и некоторых не-Unix-платформах, но только если исполняемый файл указывает на интерпретатор Python. Если указанные условия не выполняются, используются разумные значения по умолчанию.Примечание
В macOS (и, возможно, на других платформах) исполняемые файлы могут быть универсальными и содержать несколько архитектур.
Чтобы получить сведения о «64-битности» текущего интерпретатора, надёжнее запросить атрибут
sys.maxsize:is_64bits = sys.maxsize > 2**32
- platform.machine()¶
Возвращает тип машины, например
'AMD64'. Возвращается пустая строка, если значение не удаётся определить.Результат зависит от платформы и может различаться по регистру и соглашениям об именах.
- platform.node()¶
Возвращает сетевое имя компьютера (может быть не полностью определённым!). Возвращается пустая строка, если значение не удаётся определить.
- platform.platform(aliased=False, terse=False)¶
Возвращает одну строку, идентифицирующую базовую платформу с максимально возможным количеством полезной информации.
Результат предназначен для чтения человеком, а не для машинного разбора. Он может выглядеть по-разному на разных платформах, и это предусмотрено.
Если aliased равно true, функция будет использовать псевдонимы для различных платформ, которые сообщают системные имена, отличающиеся от общеупотребительных; например, SunOS будет отображаться как Solaris. Для реализации используется функция
system_alias().Установка terse в true заставляет функцию возвращать только абсолютный минимум информации, необходимый для идентификации платформы.
Изменено в версии 3.8: В macOS функция теперь использует
mac_ver(), если он возвращает непустую строку релиза, для получения версии macOS вместо версии darwin.
- platform.processor()¶
Возвращает (настоящее) имя процессора, например
'amdk6'.Возвращается пустая строка, если значение не удаётся определить. Обратите внимание, что многие платформы не предоставляют эту информацию или просто возвращают то же значение, что и для
machine(). NetBSD делает это.
- platform.python_build()¶
Возвращает кортеж
(buildno, builddate), содержащий номер сборки Python и дату в виде строк.
- platform.python_compiler()¶
Возвращает строку, идентифицирующую компилятор, использованный для компиляции Python.
- platform.python_branch()¶
Возвращает строку, идентифицирующую ветку SCM реализации Python.
- platform.python_implementation()¶
Возвращает строку, идентифицирующую реализацию Python. Возможные возвращаемые значения: 'CPython', 'IronPython', 'Jython', 'PyPy'.
- platform.python_revision()¶
Возвращает строку, идентифицирующую ревизию SCM реализации Python.
- platform.python_version()¶
Возвращает версию Python в виде строки
'major.minor.patchlevel'.Обратите внимание, что, в отличие от Python
sys.version, возвращаемое значение всегда содержит номер патча (по умолчанию 0).
- platform.python_version_tuple()¶
Возвращает версию Python в виде кортежа строк
(major, minor, patchlevel).Обратите внимание, что, в отличие от Python
sys.version, возвращаемое значение всегда содержит номер патча (по умолчанию'0').
- platform.release()¶
Возвращает номер релиза системы, например
'2.2.0'или'NT'. Пустая строка возвращается, если значение не удаётся определить.
- platform.system()¶
Возвращает имя системы/ОС, например
'Linux','Darwin','Java','Windows'. Если значение не удаётся определить, возвращается пустая строка.На iOS и Android эта функция возвращает видимое пользователю имя ОС (то есть
'iOS,'iPadOS'или'Android'). Чтобы получить имя ядра ('Darwin'или'Linux'), используйтеos.uname().
- platform.system_alias(system, release, version)¶
Возвращает
(system, release, version), преобразованный в распространённые маркетинговые названия, используемые для некоторых систем. Также в некоторых случаях информация переупорядочивается, чтобы избежать путаницы.
- platform.version()¶
Возвращает версию релиза системы, например
'#3 on degas'. Если значение не удаётся определить, возвращается пустая строка.На iOS и Android это видимая пользователю версия ОС. Чтобы получить версию ядра Darwin или Linux, используйте
os.uname().
- platform.uname()¶
Достаточно переносимый интерфейс uname. Возвращает
namedtuple(), содержащий шесть атрибутов:system,node,release,version,machineиprocessor.processorразрешается поздно, по требованию.Примечание: имена первых двух атрибутов отличаются от имён, представленных
os.uname(), где они называютсяsysnameиnodename.Записи, которые не удаётся определить, устанавливаются в
''.Изменено в версии 3.3: Результат изменён с кортежа на
namedtuple().Изменено в версии 3.9:
processorразрешается поздно, а не сразу.
Платформа Java¶Java platform
- platform.java_ver(release='', vendor='', vminfo=('', '', ''), osinfo=('', '', ''))¶
Интерфейс версии для Jython.
Возвращает кортеж
(release, vendor, vminfo, osinfo), где vminfo – это кортеж(vm_name, vm_release, vm_vendor), а osinfo – кортеж(os_name, os_version, os_arch). Значения, которые невозможно определить, устанавливаются в значения по умолчанию, заданные параметрами (все по умолчанию равны'').Устарело с версии 3.13, будет удалено в версии 3.15: Функция практически не тестировалась, имела запутанный API и была полезна только для поддержки Jython.
Платформа Windows¶Windows platform
- platform.win32_ver(release='', version='', csd='', ptype='')¶
Получает дополнительную информацию о версии из реестра Windows и возвращает кортеж
(release, version, csd, ptype), содержащий выпуск ОС, номер версии, уровень CSD (пакет обновления) и тип ОС (много/однопроцессорная). Значения, которые невозможно определить, устанавливаются в значения по умолчанию, заданные параметрами (все по умолчанию равны пустой строке).В качестве подсказки: ptype равен
'Uniprocessor Free'на однопроцессорных машинах NT и'Multiprocessor Free'на многопроцессорных.'Free'относится к версии ОС, свободной от отладочного кода. Также может быть указано'Checked', что означает, что версия ОС использует отладочный код, т.е. код, проверяющий аргументы, диапазоны и т.д.
- platform.win32_edition()¶
Возвращает строку, представляющую текущую редакцию Windows, или
None, если значение невозможно определить. Возможные значения включают, но не ограничиваются'Enterprise','IoTUAP','ServerStandard','nanoserver'.Добавлено в версии 3.8.
- platform.win32_is_iot()¶
Возвращает
True, если редакция Windows, возвращаемаяwin32_edition(), распознаётся как редакция IoT.Добавлено в версии 3.8.
Платформа macOS¶macOS platform
- platform.mac_ver(release='', versioninfo=('', '', ''), machine='')¶
Получает информацию о версии macOS и возвращает её в виде кортежа
(release, versioninfo, machine), где versioninfo – кортеж(version, dev_stage, non_release_version).Записи, которые невозможно определить, устанавливаются в
''. Все элементы кортежа являются строками.
Платформа iOS¶iOS platform
- platform.ios_ver(system='', release='', model='', is_simulator=False)¶
Получает информацию о версии iOS и возвращает её в виде
namedtuple()со следующими атрибутами:system– имя ОС; либо'iOS', либо'iPadOS'.release– номер версии iOS в виде строки (например,'17.2').model– идентификатор модели устройства; это строка вида'iPhone13,2'для физического устройства или'iPhone'в симуляторе.is_simulator– логическое значение, указывающее, запущено ли приложение в симуляторе или на физическом устройстве.
Записи, которые невозможно определить, устанавливаются в значения по умолчанию, заданные параметрами.
Платформы Unix¶Unix platforms
- platform.libc_ver(executable=sys.executable, lib='', version='', chunksize=16384)¶
Пытается определить версию libc, с которой слинкован исполняемый файл (по умолчанию интерпретатор Python). Возвращает кортеж строк
(lib, version), которые по умолчанию равны переданным параметрам, если поиск не удался.Обратите внимание, что эта функция обладает глубокими знаниями о том, как разные версии libc добавляют символы в исполняемый файл, и, вероятно, применима только к исполняемым файлам, скомпилированным с помощью gcc.
Файл читается и сканируется блоками по chunksize байт.
Платформы Linux¶Linux platforms
- platform.freedesktop_os_release()¶
Получает идентификацию операционной системы из файла
os-releaseи возвращает её в виде словаря. Файлos-releaseявляется стандартом freedesktop.org и доступен в большинстве дистрибутивов Linux. Заметным исключением является Android и дистрибутивы на его основе.Вызывает
OSErrorили подкласс, если не удаётся прочитать ни/etc/os-release, ни/usr/lib/os-release.В случае успеха функция возвращает словарь, где ключи и значения являются строками. Особые символы в значениях, такие как
"и$, не экранируются. ПоляNAME,IDиPRETTY_NAMEвсегда определены в соответствии со стандартом. Все остальные поля необязательны. Производители могут добавлять дополнительные поля.Обратите внимание, что такие поля, как
NAME,VERSIONиVARIANT, являются строками, предназначенными для отображения пользователям. Программам следует использовать такие поля, какID,ID_LIKE,VERSION_IDилиVARIANT_ID, для идентификации дистрибутивов Linux.Пример:
def get_like_distro(): info = platform.freedesktop_os_release() ids = [info["ID"]] if "ID_LIKE" in info: # идентификаторы разделяются пробелами и упорядочены по приоритету ids.extend(info["ID_LIKE"].split()) return ids
Добавлено в версии 3.10.
Платформа Android¶Android platform
- platform.android_ver(release='', api_level=0, manufacturer='', model='', device='', is_emulator=False)¶
Получает информацию об устройстве Android. Возвращает
namedtuple()со следующими атрибутами. Значения, которые не удалось определить, устанавливаются в значения по умолчанию, заданные параметрами.release– версия Android в виде строки (например,"14").api_level– уровень API работающего устройства в виде целого числа (например,34для Android 14). Чтобы узнать уровень API, под который был собран Python, см.sys.getandroidapilevel().manufacturer– название производителя.model– название модели – обычно маркетинговое название или номер модели.device– название устройства – обычно номер модели или кодовое имя.is_emulator–True, если устройство является эмулятором;False, если это физическое устройство.
Google ведёт список известных названий моделей и устройств.
Добавлено в версии 3.13.
Использование командной строки¶Command-line usage
platform также можно вызвать напрямую с помощью -m
ключа интерпретатора:
python -m platform [--terse] [--nonaliased] [{nonaliased,terse} ...]
Принимаются следующие опции:
- --terse¶
Выводит краткую информацию о платформе. Это эквивалентно вызову
platform.platform()с аргументом terse, установленным вTrue.
- --nonaliased¶
Выводит информацию о платформе без псевдонимов имён систем/ОС. Это эквивалентно вызову
platform.platform()с аргументом aliased, установленным вTrue.
Также можно передать один или несколько позиционных аргументов (terse, nonaliased)
для явного управления форматом вывода. Они ведут себя аналогично соответствующим
опциям.