platform – システムのバージョン情報にアクセスする

目的:システムのハードウェア、OS、インタープリタバージョン情報にアクセスする
利用できるバージョン:2.3 以上

Python は、クロスプラットフォームな言語としてよく使用されていますが、プログラムが実行されているシステムの情報を知りたいときがあります。ビルドツールはその情報を必要とし、アプリケーションも同様にそれぞれのオペレーティングシステムで別のインタフェースをもつライブラリや外部コマンドがあります。例えば、オペレーティングシステムのネットワーク設定を管理するツールは、ネットワークインタフェース、エイリアス、IPアドレス等の移植性の高い表現を定義できます。しかし、実際に設定ファイルを編集する必要がある場合、正しいオペレーティングシステムの設定コマンドとファイルを使用できるように、そのホストの詳細について知っておかなければなりません。 platform モジュールは、プログラムを実行しているインタープリタ、オペレーティングシステム、ハードウェアプラットフォームについて知るためのツールを提供します。

Note

この記事のサンプル出力は、MacBook Pro3.1 の OS X 10.6.4、VMware Fusion VM の CentOS 5.5、Dell PC の Microsoft Windows 2008 で実行したものです。Python は python.org にあるコンパイル済みのインストーラを使用して OS X と Windodws にインストールしました。Linux は、ソースからローカルでビルドしたインタープリタを実行しています。

インタープリタ

使用している Python インタープリタに関する情報を取得する関数が4つあります。 python_version()python_version_tuple() は、メジャー、マイナー、パッチレベルのコンポーネントをもつインタープリタのバージョンを別の形式で返します。 python_compiler() は、インタープリタをビルドするために使用したコンパイラを返します。 python_build() は、インタープリタのビルド番号の文字列を返します。

import platform

print 'Version      :', platform.python_version()
print 'Version tuple:', platform.python_version_tuple()
print 'Compiler     :', platform.python_compiler()
print 'Build        :', platform.python_build()

OS X:

$ python platform_python.py
Version      : 2.7.2
Version tuple: ('2', '7', '2')
Compiler     : GCC 4.2.1 (Apple Inc. build 5666) (dot 3)
Build        : ('v2.7.2:8527427914a2', 'Jun 11 2011 15:22:34')

Linux:

$ python platform_python.py
Version      : 2.7.0
Version tuple: ('2', '7', '0')
Compiler     : GCC 4.1.2 20080704 (Red Hat 4.1.2-46)
Build        : ('r27', 'Aug 20 2010 11:37:51')

Windows:

C:> python.exe platform_python.py
Version      : 2.7.0
Version tuple: ['2', '7', '0']
Compiler     : MSC v.1500 64 bit (AMD64)
Build        : ('r27:82525', 'Jul  4 2010 07:43:08')

プラットフォーム

platform() は、汎用的なプラットフォームの識別子を含む文字列を返します。この関数は2つのオプション引数をブーリアン値で受け取ります。 aliased が True の場合、返り値の名前は公式名から一般名に変換されます。 terse が True の場合、一部が削除された短い名前が返されます。

import platform

print 'Normal :', platform.platform()
print 'Aliased:', platform.platform(aliased=True)
print 'Terse  :', platform.platform(terse=True)

OS X:

$ python platform_platform.py
Normal : Darwin-11.4.2-x86_64-i386-64bit
Aliased: Darwin-11.4.2-x86_64-i386-64bit
Terse  : Darwin-11.4.2

Linux:

$ python platform_platform.py
Normal : Linux-2.6.18-194.3.1.el5-i686-with-redhat-5.5-Final
Aliased: Linux-2.6.18-194.3.1.el5-i686-with-redhat-5.5-Final
Terse  : Linux-2.6.18-194.3.1.el5-i686-with-glibc2.3

Windows:

C:> python.exe platform_platform.py
Normal : Windows-2008ServerR2-6.1.7600
Aliased: Windows-2008ServerR2-6.1.7600
Terse  : Windows-2008ServerR2

オペレーティングシステムとハードウェアの情報

同様にインタープリタが実行されているオペレーティングシステムとハードウェアに関する詳細情報も取り出せます。 uname() はシステム、ノード、リリース、バージョン、マシン、プロセッサの値を含むタプルを返します。個々の値は、同じ名前の関数でアクセスできます。

system()
オペレーティングシステム名を返す
node()
完全修飾ではないサーバのホスト名を返す
release()
オペレーティングシステムのリリース番号を返す
version()
より詳細なシステムのバージョン番号を返す
machine()
'i386' といったハードウェアタイプの識別子を返す
processor()
プロセッサの実際の識別子か、ほとんどの場合は machine() と同じ値を返す
import platform

print 'uname:', platform.uname()

print
print 'system   :', platform.system()
print 'node     :', platform.node()
print 'release  :', platform.release()
print 'version  :', platform.version()
print 'machine  :', platform.machine()
print 'processor:', platform.processor()

OS X:

$ python platform_os_info.py
uname: ('Darwin', 'hubert.local', '11.4.2', 'Darwin Kernel Version 11.4.2: Thu Aug 23 16:25:48 PDT 2012; root:xnu-1699.32.7~1/RELEASE_X86_64', 'x86_64', 'i386')

system   : Darwin
node     : hubert.local
release  : 11.4.2
version  : Darwin Kernel Version 11.4.2: Thu Aug 23 16:25:48 PDT 2012; root:xnu-1699.32.7~1/RELEASE_X86_64
machine  : x86_64
processor: i386

Linux:

$ python platform_os_info.py
uname: ('Linux', 'hermes.hellfly.net', '2.6.18-194.3.1.el5',
'#1 SMP Thu May 13 13:09:10 EDT 2010', 'i686', 'i686')

system   : Linux
node     : hermes.hellfly.net
release  : 2.6.18-194.3.1.el5
version  : #1 SMP Thu May 13 13:09:10 EDT 2010
machine  : i686
processor: i686

Windows:

C:> python.exe platform_os_info.py
uname: ('Windows', 'dhellmann', '2008ServerR2', '6.1.7600', 'AMD64',
'Intel64 Family 6 Model 15 Stepping 11, GenuineIntel')

system   : Windows
node     : dhellmann
release  : 2008ServerR2
version  : 6.1.7600
machine  : AMD64
processor: Intel64 Family 6 Model 15 Stepping 11, GenuineIntel

実行可能なアーキテクチャ

個別のプログラムアーキテクチャの情報は architecture() 関数を使用して調べられます。最初の引数は、実行可能なプログラム(デフォルトは sys.executable の Python インタープリタ)へのパスです。返り値は、ビットアーキテクチャと使用されるリンケージフォーマットを含むタプルです。

import platform

print 'interpreter:', platform.architecture()
print '/bin/ls    :', platform.architecture('/bin/ls')

OS X:

$ python platform_architecture.py
interpreter: ('64bit', '')
/bin/ls    : ('64bit', '')

Linux:

$ python platform_architecture.py
interpreter: ('32bit', 'ELF')
/bin/ls    : ('32bit', 'ELF')

Windows:

C:> python.exe platform_architecture.py
interpreter  : ('64bit', 'WindowsPE')
iexplore.exe : ('64bit', '')

See also

platform

Standard library documentation for this module.

本モジュールの標準ライブラリドキュメント

Bookmark and Share