# `platform` --- 実行中プラットフォームの固有情報を参照する

ソースコード: Lib/platform.py

注釈

プラットフォーム毎にアルファベット順に並べています。Linuxについては Unixセクションを参照してください。

## クロスプラットフォーム

platform.architecture(executable=sys.executable, bits='', linkage='')

  executable で指定した実行可能ファイル（省略時はPythonインタープリタのバイナリ）の各種アーキテクチャ情報を調べます。

  戻り値はタプル `(bits, linkage)` で、アーキテクチャのビット数と実行可能ファイルのリンク形式を示します。どちらの値も文字列で返ります。

  値を決定できない場合はパラメータプリセットから与えられる値を返します。bits に `''` を与えた場合、サポートされているポインタサイズを知るために `sizeof(pointer)` (Python バージョン < 1.5.2 では `sizeof(long)`) が使用されます。

  この関数は、システムの `file` コマンドを使用します。 `file` はほとんどのUnixプラットフォームと一部の非Unixプラットフォームで利用可能ですが、 `file` コマンドが利用できず、かつ executable が Pythonインタープリタでない場合には適切なデフォルト値が返ります。

  注釈

  macOS (とひょっとすると他のプラットフォーム) では、実行可能ファイルは複数のアーキテクチャを含んだユニバーサル形式かもしれません。

  現在のインタープリターが "64-bit" であるかどうかを調べるには、 `sys.maxsize` の方が信頼できます:

      is_64bits = sys.maxsize > 2**32

platform.machine()

  `'AMD64'` のような、機種を返します。不明な場合は空文字列を返します。

platform.node()

  コンピュータのネットワーク名を返します。ネットワーク名は完全修飾名とは限りません。不明な場合は空文字列を返します。

platform.platform(aliased=False, terse=False)

  実行中プラットフォームを識別する文字列を返します。この文字列には、有益な情報をできるだけ多く付加しています。

  戻り値は機械で処理しやすい形式ではなく、人間にとって読みやすい 形式となっています。異なったプラットフォームでは異なった戻り値となるようになっています。

  aliased が真なら、システムの名称として一般的な名称ではなく、別名を使用して結果を返します。たとえば、SunOS は Solaris となります。この機能は `system_alias()` で実装されています。

  terse が真なら、プラットフォームを特定するために最低限必要な情報だけを返します。

  バージョン 3.8 で変更: macOSでは、 `mac_ver()` が空でないリリース文字列を返すとき、darwin のバージョンではなく macOS のバージョンを取得するために、この関数は `mac_ver()` を使うようになりました。

platform.processor()

  `'amdk6'` のような、（現実の）プロセッサ名を返します。

  不明な場合は空文字列を返します。NetBSDのようにこの情報を提供しない、または `machine()` と同じ値しか返さないプラットフォームも多く存在しますので、注意してください。

platform.python_build()

  Pythonのビルド番号と日付を、`(buildno, builddate)` のタプルで返します。

platform.python_compiler()

  Pythonをコンパイルする際に使用したコンパイラを示す文字列を返します。

platform.python_branch()

  Python実装のバージョン管理システム上のブランチを特定する文字列を返します。

platform.python_implementation()

  Python実装を指定する文字列を返します。戻り値は: 'CPython', 'IronPython', 'Jython', 'PyPy' のいずれかです。

platform.python_revision()

  Python実装のバージョン管理システム上のリビジョンを特定する文字列を返します。

platform.python_version()

  Python のバージョンを、`'major.minor.patchlevel'` 形式の文字列で返します。

  `sys.version` と異なり、patchlevel（デフォルトでは0)も必ず含まれています。

platform.python_version_tuple()

  Pythonのバージョンを、文字列のタプル `(major, minor, patchlevel)` で返します。

  `sys.version` と異なり、patchlevel（デフォルトでは `'0'`)も必ず含まれています。

platform.release()

  `'2.2.0'` や `'NT'` のような、システムのリリース情報を返します。不明な場合は空文字列を返します。

platform.system()

  `'Linux'` 、 `'Darwin'` 、 `'Java'` 、 `'Windows'` のような、システム/OS 名を返します。不明な場合は空文字列を返します。

  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)

  マーケティング目的で使われる一般的な別名に変換して `(system, release, version)` を返します。混乱を避けるために、情報を並べなおす場合があります。

platform.version()

  `'#3 on degas'` のような、システムのリリース情報を返します。不明な場合は空文字列を返します。

  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 インターフェースです。 `system`, `node`, `release`, `version`, `machine`, `processor` の6つの属性を持った `namedtuple()` を返します。

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

## 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)` です。不明な項目は引数で指定した値(デフォルトは `''`) となります。

  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.win32_ver(release='', version='', csd='', ptype='')

  Get additional version information from the Windows Registry and return a tuple `(release, version, csd, ptype)` referring to OS release, version number, CSD level (service pack) and OS type (multi/single processor). Values which cannot be determined are set to the defaults given as parameters (which all default to an empty string).

  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()

  Returns a string representing the current Windows edition, or `None` if the value cannot be determined. Possible values include but are not limited to `'Enterprise'`, `'IoTUAP'`, `'ServerStandard'`, and `'nanoserver'`.

  Added in version 3.8.

platform.win32_is_iot()

  `win32_edition()` によって返された Windows のエディションが IoT エディションの時 `True` を返します。

  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` は OS 名です。 `'iOS'` または `'iPadOS'` となります。

  - `release` は、 iOS のバージョン番号の文字列です。 (`'17.2'` など)

  - `model` はデバイスモデルの識別子です。これは物理デバイスでは `'iPhone13,2'` 、シミュレーターでは `'iPhone'` のような文字列になります。

  - `is_simulator` は、アプリがシミュレーター上で実行されているのか、物理デバイス上で実行されているのかを示す真偽値です。

  決定不能な項目は、引数として指定されたデフォルトに設定されます。

## Unix プラットフォーム

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

  executableで指定したファイル（省略時はPythonインタープリタ）がリンクしているlibcバージョンの取得を試みます。戻り値は文字列のタプル `(lib, version)` で、不明な項目は引数で指定した値となります。

  この関数は、実行形式に追加されるシンボルの細かな違いによって、libcのバージョンを特定します。この違いは gcc でコンパイルされた実行可能ファイルでのみ有効だと思われます。

  chunksize にはファイルから情報を取得するために読み込むバイト数を指定します。

## Linux プラットフォーム

platform.freedesktop_os_release()

  Get operating system identification from `os-release` file and return it as a dict. The `os-release` file is a freedesktop.org standard and is available in most Linux distributions. A noticeable exception is Android and Android-based distributions.

  Raises `OSError` or subclass when neither `/etc/os-release` nor `/usr/lib/os-release` can be read.

  On success, the function returns a dictionary where keys and values are strings. Values have their special characters like `"` and `$` unquoted. The fields `NAME`, `ID`, and `PRETTY_NAME` are always defined according to the standard. All other fields are optional. Vendors may include additional fields.

  Note that fields like `NAME`, `VERSION`, and `VARIANT` are strings suitable for presentation to users. Programs should use fields like `ID`, `ID_LIKE`, `VERSION_ID`, or `VARIANT_ID` to identify Linux distributions.

  以下はプログラム例です:

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

## Miscellaneous

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.