[解決!Python]プログラムを実行しているプラットフォームを判別するには解決!Python

osモジュールのname属性や、sysモジュールのplatform属性、platformモジュールのplatform関数などを使って、プログラムを実行しているプラットフォームを判別する方法を紹介する。

» 2023年09月26日 05時00分 公開
[かわさきしんじDeep Insider編集部]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「解決!Python」のインデックス

連載目次

属性/関数 説明
os.name属性 'posix'/'nt'/'java'のいずれかが返される
os.uname関数 OS名/マシン名/OSのリリース/OSバージョン/ハードウェア識別子が返される。Unix環境でのみ使用可能
sys.platform属性 プログラムを実行中のプラットフォームを識別する文字列が返される。'emscripten'/'linux'/'wasi'/'win32'/'cygwin'/'darwin'など。バージョンが末尾に付加される場合もある
platform.platform関数 プログラムを実行中のプラットフォームを識別する文字列が返される。sys.platform属性よりも多くの情報を含む
プラットフォームを判別するために使える属性/関数

プラットフォームを判別するために使える属性/関数

 Pythonではプログラムを実行しているOS/プラットフォームを判別するために幾つかのモジュールでさまざまな属性や関数が提供されている。

  • osモジュール:os.name属性とos.uname関数
  • sysモジュール:sys.platform属性
  • platformモジュール:platform.platform属性

 これらのうち、os.uname関数についてはUnix環境でのみ使用可能であり、Windows環境には提供されていないことには注意しよう。

os.name属性とos.uname関数

 プログラムを実行しているのがWindows環境かUnix環境(POSIX環境)かを知るだけであれば、os.name属性を用いるのが簡単だ。

import os

if os.name == 'posix':
    print('in posix')
elif os.name == 'nt':
    print('in windows')
else:
    print('another')


 macOSとWindowsで上記コードを実行すると(もちろん)次のような結果となる。

macOSでの実行結果 macOSでの実行結果

Windowsでの実行結果 Windowsでの実行結果

 より詳細な情報を得る必要があれば、os.uname関数が使えるが、既に述べた通り、これはUnix系統のOSでのみ使用可能であることには注意が必要だ。

 os.uname関数は以下の5つの情報を含むposix.uname_resultオブジェクトを返送する。以下の情報はタプルもしくは箇条書きに示した属性名を使用してアクセスできる。タプルの要素としてアクセスする場合は、以下の箇条書きの上から0番目、1番目、……のようになっている。

  • sysname属性:OS名
  • nodename属性:プログラムを実行しているマシンのネットワーク上でのマシン名
  • release属性:OSのリリースバージョン
  • version属性:OSのバージョン
  • machine属性:ハードウェア識別子

 使用例を以下に示す。

import os

info = os.uname()
print(info.sysname)  # OS名を表示
print(info[3])  # OSのバージョンを表示


 これをmacOS環境で実行した結果を以下に示す。

macOSでの実行結果 macOSでの実行結果

sys.platform属性

 sys.platform属性はプラットフォームを識別する文字列になっている。Windows/macOS/Linuxでは以下のような値となる。他の環境での値についてはドキュメントを参照されたい。

  • Windows:'win32'
  • macOS:'darwin'
  • Linux:'linux'

 例えば、以下のようなコードがあったとする。

import sys

print(sys.platform)


 これをmacOSとWindowsで実行した結果を以下に示す。

macOSでの実行結果 macOSでの実行結果

Windowsでの実行結果 Windowsでの実行結果

platform.platform関数

 platform.platform関数はプログラムを実行しているプラットフォームを識別する文字列を返送する。sys.platform属性と異なるのは、OS名、バージョン、ハードウェアアーキテクチャのような詳細な情報が含まれる点だ。

import platform

info = platform.platform()
print(info)


 上記のコードをmacOSとWindowsで実行した結果を以下に示す。

macOSでの実行結果 macOSでの実行結果

Windowsでの実行結果 Windowsでの実行結果

 なお、platform.platform関数にはaliasedパラメーターとterseパラメーターを指定できる。前者に真となる値を指定すると、別名が定義されている場合にはそれを返送する。後者に真となる値を指定すると、プラットフォームを識別するのに必要となる最低限の情報だけを返送する。

 例として、macOSでterse=1を指定してこの関数を呼び出した結果を以下に示す。

terse=1を指定するとシンプルにOSとそのバージョンが得られる terse=1を指定するとシンプルにOSとそのバージョンが得られる

 クロスプラットフォームでOSとバージョンを取得したいというときにはこの関数が役立つだろう。

「解決!Python」のインデックス

解決!Python

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。