platform — Доступ к идентификационным данным базовой платформы

Источник: Lib/platform.py


Примечание

Конкретные платформы перечислены в алфавитном порядке, причем Linux включен в раздел Unix.

Кросс-платформа

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

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

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'.

Added in version 3.8.

platform.win32_is_iot()

Возвращает True, если редакция Windows, возвращаемая командой win32_edition(), распознана как редакция IoT.

Added in version 3.8.

Платформа macOS

platform.mac_ver(release='', versioninfo=('', '', ''), machine='')

Получает информацию о версии macOS и возвращает ее в виде кортежа (release, versioninfo, machine), в котором versioninfo является кортежем (version, dev_stage, non_release_version).

Записи, которые не могут быть определены, устанавливаются в ''. Все элементы кортежа являются строками.

Платформа iOS

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

platform.libc_ver(executable=sys.executable, lib='', version='', chunksize=16384)

Пытается определить версию libc, с которой связан исполняемый файл (по умолчанию интерпретатор Python). Возвращает кортеж строк (lib, version), которые по умолчанию соответствуют заданным параметрам в случае неудачи поиска.

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

Файл читается и сканируется фрагментами по chunksize байт.

Платформы Linux

platform.freedesktop_os_release()

Получите идентификатор операционной системы из файла os-release и верните его в виде dict. Файл os-release представляет собой freedesktop.org standard и доступен в большинстве дистрибутивов Linux. Заметным исключением является Android и дистрибутивы на базе 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 are space separated and ordered by precedence
        ids.extend(info["ID_LIKE"].split())
    return ids

Added in version 3.10.

Платформа Android

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 - Manufacturer name.

  • model - Model name - обычно маркетинговое название или номер модели.

  • device - Device name - обычно номер модели или кодовое имя.

  • is_emulator - True, если устройство является эмулятором; False, если это физическое устройство.

Google поддерживает list of known model and device names.

Added in version 3.13.