Pythonのバージョンを確認、表示(sys.versionなど)

Modified: | Tags: Python

インストールされているPythonのバージョン、および、実際にスクリプトで実行されているPythonのバージョンを取得して確認、表示する方法を示す。

コマンドラインとコード、それぞれの確認方法について説明する。

コード中でバージョン番号を取得すると、print()で表示して確認することはもちろん、バージョンによって処理を切り替えたりもできる。

Python本体のバージョンではなく、パッケージのバージョンや実行中の環境のOSなどの情報を確認したい場合は以下の記事を参照。

コマンドラインでバージョンを確認、表示: --version, -V, -VV

Windowsならコマンドプロンプト、Macならターミナルなどで、pythonコマンドまたはpython3コマンドに--versionオプションまたは-Vオプションを付けて実行する。

$ python3 --version
Python 3.11.3

$ python3 -V
Python 3.11.3

環境によっては、Python2.x系がpythonコマンド、Python3.x系がpython3コマンドに割り当てられている場合もある。

Python3.6から-VVオプションが追加された。-Vよりも詳しい情報が表示される。

$ python3 -VV
Python 3.11.3 (main, Apr  7 2023, 20:13:31) [Clang 14.0.0 (clang-1400.0.29.202)]

コード中でバージョンを取得: sys, platform

標準ライブラリのsysモジュール、または、platformモジュールを使って、実際に実行されているPythonのバージョンを取得して確認、表示できる。標準ライブラリなので追加のインストールは必要ないが、importは必要。

import sys
import platform

Pythonのスクリプトを実行して確認する。スクリプトの内容はWindowsでもMacでもUbuntuなどのLinuxでも同じ。

複数のバージョンのPythonがインストールされている環境で、どのバージョンのPythonが使われているか確認する際などに便利。Python3だと思っていたらPython2で実行されていたということもあるので、何かおかしいときは念のため一度確認してみるといい。

Python2とPython3で処理内容を切り替えたい場合の条件分岐にも使える。

バージョン番号を含む様々な情報の文字列: sys.version

sys.versionは、バージョン番号を含む様々な情報を示す文字列。

sys.version
Python インタプリタのバージョン番号の他、ビルド番号や使用コンパイラなどの情報を示す文字列です。
sys.version --- システムパラメータと関数 — Python 3.11.3 ドキュメント

print(sys.version)
# 3.11.3 (main, Apr  7 2023, 20:13:31) [Clang 14.0.0 (clang-1400.0.29.202)]

print(type(sys.version))
# <class 'str'>

バージョン番号の数値のタプル: sys.version_info

sys.version_infoはバージョン番号を示す名前付きタプル。

sys.version_info
バージョン番号を示す 5 個の値のタプル: major、minor、micro、releaselevel、および serial です。releaselevel 以外はすべて整数です。 sys.version_info --- システムパラメータと関数 — Python 3.11.3 ドキュメント

print(sys.version_info)
# sys.version_info(major=3, minor=11, micro=3, releaselevel='final', serial=0)

print(type(sys.version_info))
# <class 'sys.version_info'>

releaselevelは文字列で、それ以外の要素は整数。

インデックスを指定してそれぞれの値を取得できる。

print(sys.version_info[0])
# 3

Python2系はバージョン2.7から、Python3系はバージョン3.1から、名前を使った要素アクセス(major, minor, micro, releaselevel, serial)もサポートされた。例えばメジャーバージョンを取得したい場合は以下のようにする。

print(sys.version_info.major)
# 3

実行されているのがPython2かPython3かを判定したい場合は、sys.version_info[0]またはsys.version_info.majorでメジャーバージョンを確認すればよい。2ならPython2で、3ならPython3。

Python2とPython3で処理を切り替える例は以下の通り。

if sys.version_info[0] == 3:
    print('Python3')
else:
    print('Python2')
# Python3

マイナーバージョンで処理を切り替えたい場合は、sys.version_info[1]またはsys.version_info.minorで判定する。

なお、上述のように、名前を使った要素アクセスはバージョン2.7およびバージョン3.1からのサポートなので、それより前のバージョンで実行される可能性がある場合はsys.version_info[0]sys.version_info[1]のようにインデックスで指定する必要がある。

バージョン番号の文字列: platform.python_version()

platform.python_version()は、major.minor.patchlevel形式の文字列を返す関数。

platform.python_version()
Python のバージョンを、'major.minor.patchlevel' 形式の文字列で返します。
platform.python_version --- 実行中プラットフォームの固有情報を参照する — Python 3.11.3 ドキュメント

print(platform.python_version())
# 3.11.3

print(type(platform.python_version()))
# <class 'str'>

バージョン番号をシンプルな文字列として取得したい場合に便利。

バージョン番号の文字列のタプル: platform.python_version_tuple()

platform.python_version_tuple()は、(major, minor, patchlevel)のタプルを返す関数。タプルの中身は数値ではなく文字列。

platform.python_version_tuple()
Pythonのバージョンを、文字列のタプル (major, minor, patchlevel) で返します。
platform.python_version_tuple --- 実行中プラットフォームの固有情報を参照する — Python 3.11.3 ドキュメント

print(platform.python_version_tuple())
# ('3', '11', '3')

print(type(platform.python_version_tuple()))
# <class 'tuple'>

sys.version_infoと異なりただのタプルなので、majorminorの名前での要素アクセスはできない。

関連カテゴリー

関連記事