Pythonのバージョンを確認、表示(sys.versionなど)
インストールされている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
と異なりただのタプルなので、major
やminor
の名前での要素アクセスはできない。