Документация 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=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 разрешается поздно, а не сразу.

platform.invalidate_caches()

Очищает внутренний кеш информации, такой как uname(). Это обычно полезно, когда node() платформы изменяется внешним процессом и требуется получить обновлённое значение.

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

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

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

Платформа iOSiOS 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 – логическое значение, указывающее, запущено ли приложение в симуляторе или на физическом устройстве.

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

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

Платформа AndroidAndroid 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_emulatorTrue, если устройство является эмулятором; 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) для явного управления форматом вывода. Они ведут себя аналогично соответствующим опциям.