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

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

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

Если aliased равно true, функция будет использовать псевдонимы для различных платформ, которые сообщают имена систем, отличающиеся от их общих имен, например, SunOS будет сообщаться как Solaris. Для реализации этого используется функция system_alias().

Установка terse в true приводит к тому, что функция возвращает только абсолютный минимум информации, необходимой для идентификации платформы.

Изменено в версии 3.8: На macOS функция теперь использует mac_ver(), если она возвращает непустую строку release, чтобы получить версию 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().

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

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

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

platform.win32_is_iot()

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

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

Платформа macOS

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

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

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

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

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

Вернуться на верх