# `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)`, який містить інформацію про бітову архітектуру та формат зв’язку, що використовується для виконуваного файлу. Обидва значення повертаються як рядки.

  Значення, які не можуть бути визначені, повертаються відповідно до налаштувань параметрів. Якщо біти задано як `''`, `sizeof(pointer)` (або `sizeof(long)` у версії Python < 1.5.2) використовується як індикатор підтримуваного розміру покажчика.

  Функція покладається на системну команду `file` для виконання фактичної роботи. Це доступно на більшості, якщо не на всіх платформах Unix і на деяких платформах, що не належать до Unix, і тільки якщо виконуваний файл вказує на інтерпретатор Python. Розумні значення за замовчуванням використовуються, коли вищезазначені потреби не задовольняються.

  Примітка

  У macOS (і, можливо, на інших платформах) виконувані файли можуть бути універсальними файлами, що містять кілька архітектур.

  To get at the «64-bitness» of the current interpreter, it is more reliable to query the `sys.maxsize` attribute:

      is_64bits = sys.maxsize > 2**32

platform.machine()

  Повертає тип машини, напр. `'AMD64'`. Якщо значення неможливо визначити, повертається порожній рядок.

  The output is platform-dependent and may differ in casing and naming conventions.

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

  Зауважте, що на відміну від `sys.version` Python, повернуте значення завжди включатиме patchlevel (він за замовчуванням дорівнює 0).

platform.python_version_tuple()

  Повертає версію Python як кортеж `(major, minor, patchlevel)` рядків.

  Зауважте, що на відміну від `sys.version` Python, повернуте значення завжди включатиме рівень виправлення (за замовчуванням він `'0'`).

platform.release()

  Повертає випуск системи, напр. `'2.2.0'` або `'NT'`. Якщо значення неможливо визначити, повертається порожній рядок.

platform.system()

  Повертає назву системи/ОС, наприклад `'Linux'`, `'Darwin'`, `'Java'`, `'Windows'`. Якщо значення неможливо визначити, повертається порожній рядок.

  On iOS and Android, this returns the user-facing OS name (i.e, `'iOS`, `'iPadOS'` or `'Android'`). To obtain the kernel name (`'Darwin'` or `'Linux'`), use `os.uname()`.

platform.system_alias(system, release, version)

  Повертає `(система, випуск, версія)`, пов’язаний із загальними маркетинговими назвами, які використовуються для деяких систем. Він також виконує певне впорядкування інформації в деяких випадках, коли інакше це може призвести до плутанини.

platform.version()

  Повертає версію випуску системи, напр. `'#3 на Дега'`. Якщо значення неможливо визначити, повертається порожній рядок.

  On iOS and Android, this is the user-facing OS version. To obtain the Darwin or Linux kernel version, use `os.uname()`.

platform.uname()

  Досить портативний інтерфейс uname. Повертає `namedtuple()`, що містить шість атрибутів: `system`, `node`, `release`, `version`, `machine`, і `processor`.

  `processor` is resolved late, on demand.

  Note: the first two attribute names differ from the names presented by `os.uname()`, where they are named `sysname` and `nodename`.

  Записи, які не можуть бути визначені, мають значення `''`.

  Змінено в версії 3.3: Результат змінено з кортежу на `namedtuple()`.

  Змінено в версії 3.9: `processor` is resolved late instead of immediately.

platform.invalidate_caches()

  Clear out the internal cache of information, such as the `uname()`. This is typically useful when the platform’s `node()` is changed by an external process and one needs to retrieve the updated value.

  Added in version 3.14.

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

  Deprecated since version 3.13, will be removed in version 3.15: It was largely untested, had a confusing API, and was only useful for Jython support.

## Windows platform

platform.win32_ver(release='', version='', csd='', ptype='')

  Отримайте додаткову інформацію про версію з реєстру Windows і поверніть кортеж `(release, version, csd, ptype)` із посиланням на випуск ОС, номер версії, рівень CSD (пакет оновлень) і тип ОС (багато/однопроцесор). Значення, які не можуть бути визначені, встановлюються на значення за замовчуванням, надані як параметри (усі типові значення — порожній рядок).

  As a hint: ptype is `'Uniprocessor Free'` on single processor NT machines and `'Multiprocessor Free'` on multi processor machines. The `'Free'` refers to the OS version being free of debugging code. It could also state `'Checked'` which means the OS version uses debugging code, i.e. code that checks arguments, ranges, etc.

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

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

  Отримати інформацію про версію macOS і повернути її як кортеж `(release, versioninfo, machine)`, де versioninfo є кортежем `(version, dev_stage, non_release_version)`.

  Записи, які не можуть бути визначені, мають значення `''`. Усі записи кортежу є рядками.

## iOS platform

platform.ios_ver(system='', release='', model='', is_simulator=False)

  Get iOS version information and return it as a `namedtuple()` with the following attributes:

  - `system` is the OS name; either `'iOS'` or `'iPadOS'`.

  - `release` is the iOS version number as a string (e.g., `'17.2'`).

  - `model` is the device model identifier; this will be a string like `'iPhone13,2'` for a physical device, or `'iPhone'` on a simulator.

  - `is_simulator` is a boolean describing if the app is running on a simulator or a physical device.

  Entries which cannot be determined are set to the defaults given as parameters.

## Unix platforms

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

  Намагається визначити версію libc, з якою пов’язано виконуваний файл (за замовчуванням – інтерпретатор Python). Повертає кортеж рядків `(lib, version)`, які за замовчуванням мають задані параметри, якщо пошук не вдасться.

  Зауважте, що ця функція має глибокі знання про те, як різні версії libc додають символи до виконуваного файлу, ймовірно, придатна лише для виконуваних файлів, скомпільованих за допомогою gcc.

  Файл зчитується та сканується шматками chunksize байтів.

## Linux platforms

platform.freedesktop_os_release()

  Отримайте ідентифікатор операційної системи з файлу `os-release` і поверніть його як dict. Файл `os-release` є стандартом freedesktop.org і доступний у більшості дистрибутивів 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

platform.android_ver(release='', api_level=0, manufacturer='', model='', device='', is_emulator=False)

  Get Android device information. Returns a `namedtuple()` with the following attributes. Values which cannot be determined are set to the defaults given as parameters.

  - `release` - Android version, as a string (e.g. `"14"`).

  - `api_level` - API level of the running device, as an integer (e.g. `34` for Android 14). To get the API level which Python was built against, see `sys.getandroidapilevel()`.

  - `manufacturer` - Manufacturer name.

  - `model` - Model name – typically the marketing name or model number.

  - `device` - Device name – typically the model number or a codename.

  - `is_emulator` - `True` if the device is an emulator; `False` if it’s a physical device.

  Google maintains a list of known model and device names.

  Added in version 3.13.

## Command-line usage

`platform` can also be invoked directly using the `-m` switch of the interpreter:

    python -m platform [--terse] [--nonaliased] [{nonaliased,terse} ...]

The following options are accepted:

--terse

  Print terse information about the platform. This is equivalent to calling `platform.platform()` with the terse argument set to `True`.

--nonaliased

  Print platform information without system/OS name aliasing. This is equivalent to calling `platform.platform()` with the aliased argument set to `True`.

You can also pass one or more positional arguments (`terse`, `nonaliased`) to explicitly control the output format. These behave similarly to their corresponding options.