Документация Python неофициальный перевод
Содержание страницы

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=0, terse=0)

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

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

Если 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'. Если значение не удаётся определить, возвращается пустая строка.

platform.system_alias(system, release, version)

Возвращает (system, release, version), преобразованный в распространённые маркетинговые названия, используемые для некоторых систем. Также в некоторых случаях информация переупорядочивается, чтобы избежать путаницы.

platform.version()

Возвращает версию релиза системы, например '#3 on degas'. Если значение не удаётся определить, возвращается пустая строка.

platform.uname()

Достаточно переносимый интерфейс uname. Возвращает namedtuple(), содержащий шесть атрибутов: system, node, release, version, machine и processor.

Обратите внимание, что это добавляет шестой атрибут (processor), отсутствующий в результате os.uname(). Кроме того, имена первых двух атрибутов различаются; os.uname() называет их sysname и nodename.

Записи, которые не удаётся определить, устанавливаются в ''.

Изменено в версии 3.3: Результат изменён с кортежа на namedtuple().

Платформа JavaJava 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). Значения, которые невозможно определить, устанавливаются в значения по умолчанию, заданные параметрами (все по умолчанию равны '').

Платформа WindowsWindows 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.

Платформа macOSmacOS Platform

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

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

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

Платформы UnixUnix Platforms

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

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

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

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

Платформы LinuxLinux 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.