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' のような、システムのリリース情報を返します。不明な場合は空文字列を返します。

iOS と Android では、ユーザ向けの OS のリリースを返します。 Darwin や Linux のカーネルのリリースを取得するには、os.uname() を使ってください。

platform.system()

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

iOS と Android では、ユーザ向けの OS 名 ('iOS'、'iPadOS'、'Android') を返します。 カーネル名 ('Darwin' や 'Linux') を取得するには、os.uname() を使ってください。

platform.system_alias(system, release, version)

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

platform.version()

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

platform.uname()

極めて可搬性の高い uname インターフェースです。 system, node, release, version, machine, processor の6つの属性を持った namedtuple() を返します。

processor は必要になった時点で遅延評価されます。

注意: 最初の二つの属性名は、os.uname() の sysname と nodename とは異なります。

不明な項目は '' となります。

バージョン 3.3 で変更: 結果が タプル から namedtuple() へ変更されました。

バージョン 3.9 で変更: processor は即座に評価されず、遅延評価されるようになりました。

platform.invalidate_caches()

uname() などの情報の内部キャッシュを消去します。 典型的には、外部プロセスによってプラットフォームの node() が変更され、更新後の値を取得する必要がある場合に役立ちます。

Added in version 3.14.

Windows プラットフォーム

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

Windows レジストリから追加のバージョン情報を取得し、OS のリリース、バージョン番号、CSD レベル (サービスパック)、OS の種類 (マルチプロセッサー/シングルプロセッサー) を表すタプル (release, version, csd, ptype) を返します。 取得できない値には、引数で指定したデフォルト値を使います (各引数のデフォルトは空文字列です)。

参考として、ptype はシングルプロセッサーの NT マシンでは 'Uniprocessor Free'、マルチプロセッサーのマシンでは 'Multiprocessor Free' になります。 'Free' は、OS にデバッグ用のコードが含まれていないことを表します。 'Checked' の場合もあり、これは OS が引数や範囲などをチェックするデバッグ用のコードを使っていることを表します。

platform.win32_edition()

現在の Windows のエディションを表す文字列を返します。 取得できない場合は None を返します。 値には 'Enterprise'、'IoTUAP'、'ServerStandard'、'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()

os-release ファイルから OS の識別情報を取得し、辞書として返します。 os-release ファイルは freedesktop.org の標準 で、多くの Linux ディストリビューションで利用できます。 主な例外は、Android と Android を基にしたディストリビューションです。

/etc/os-release と /usr/lib/os-release のどちらも読み込めない場合、OSError またはそのサブクラスの例外を送出します。

成功すると、キーと値が文字列の辞書を返します。 値に含まれる " や $ などの特殊文字のクォートは解除されます。 標準に従って、NAME、ID、PRETTY_NAME フィールドは必ず定義されます。 それ以外のフィールドはすべて任意です。 ベンダーが追加のフィールドを含めることもあります。

NAME、VERSION、VARIANT などのフィールドは、ユーザに表示するのに適した文字列です。 プログラムで Linux ディストリビューションを識別するには、ID、ID_LIKE、VERSION_ID、VARIANT_ID などのフィールドを使ってください。

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

def get_like_distro():
    info = platform.freedesktop_os_release()
    ids = [info["ID"]]
    if "ID_LIKE" in info:
        # ID はスペースで区切られ、優先順位に従って並んでいます
        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 レベルを表す整数 (Android 14 なら 34 など) です。 Python のビルド時に使われた API レベルを取得するには、sys.getandroidapilevel() を参照してください。

  • manufacturer - メーカー名 です。

  • model - モデル名 です。 通常は販売名または型番です。

  • device - デバイス名 です。 通常は型番またはコードネームです。

  • is_emulator - デバイスがエミュレーターなら True、物理デバイスなら False です。

Google は 既知のモデル名とデバイス名の一覧 を管理しています。

Added in version 3.13.

コマンドラインでの使用

platform は、インタープリタの -m スイッチを使って直接起動することもできます。

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

以下のオプションが使用できます:

--terse

プラットフォームについての簡潔な情報を表示します。 terse 引数を True にして platform.platform() を呼び出すのと同じです。

--nonaliased

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

位置引数 (terse、nonaliased) を一つ以上渡して、出力形式を明示的に制御することもできます。 これらの動作は、対応するオプションと同様です。