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

インストールされているPythonのバージョン、および、実際にスクリプトで実行されているPythonのバージョンを取得して確認、表示する方法を示す。 コマンドラインとコード、それぞれの確認方法について説明します。

コマンドラインでバージョンを確認、表示: --version, -V, -VV コード中でバージョンを取得: sys, platform バージョン番号を含む様々な情報の文字列: sys.version バージョン番号の数値のタプル: sys.version_info バージョン番号の文字列: platform.python_version() バージョン番号の文字列のタプル: platform.python_version_tuple()コード中でバージョン番号を取得すると、print()で表示して確認することはもちろん、バージョンによって処理を切り替えたりもできます。 Python本体のバージョンではなく、パッケージのバージョンや実行中の環境のOSなどの情報を確認したい場合は

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

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

$ python --version
Python 2.7.15

$ python -V
Python 2.7.15

$ python3 --version
Python 3.7.0

$ python3 -V
Python 3.7.0

上の例のように、環境によっては、Python2.x系がpythonコマンド、Python3.x系がpython3コマンドに割り当てられています。 Python3.6から-VVオプションが追加されました。-Vよりも詳しい情報が表示されます。

$ python3 -VV
Python 3.7.0 (default, Jun 29 2018, 20:13:13)
[Clang 9.1.0 (clang-902.0.39.2)]

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

標準ライブラリのsysモジュール、または、platformモジュールを使って、実際に実行されているPythonのバージョンを取得して確認、表示することもできます。 Pythonのスクリプトを実行して確認します。スクリプトの内容はWindowsでもMacでもUbuntuなどのLinuxでも同じ。 複数のバージョンのPythonがインストールされている環境で、どのバージョンのPythonが使われているか確認する際などに便利です。Python3だと思っていたらPython2で実行されていた、なんてこともあるので、何かおかしいときは念のため一度確認してみるといい。 Python2とPython3で処理内容を切り替えたい場合の条件分岐にも使えます。

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

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

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

import sys

print(sys.version)
# 3.7.0 (default, Jun 29 2018, 20:13:13)
# [Clang 9.1.0 (clang-902.0.39.2)]

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

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

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

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

print(sys.version_info)
# sys.version_info(major=3, minor=7, micro=0, 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

実行されているPythonがPython2かPython3かを判定したい場合は、このsys.version_info.majorでメジャーバージョンを確認すればOKです。2ならPython2で、3ならPython3。 Python2とPython3で処理を切り替える例は以下の通り。

if sys.version_info.major == 3:
    print('Python3')
else:
    print('Python2')
# Python3

マイナーバージョンで処理を切り替えたい場合は`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' 形式の文字列で返します。 16.14. platform — 実行中プラットフォームの固有情報を参照する — Python 3.5.2 ドキュメント

import platform

print(platform.python_version())
# 3.7.0

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) で返します。 16.14. platform — 実行中プラットフォームの固有情報を参照する — Python 3.5.2 ドキュメント

print(platform.python_version_tuple())
# ('3', '7', '0')

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

sys.version_infoと異なりただのタプルなので、majorやminorの名前での要素アクセスはできません。

Last Updated: 6/26/2019, 10:34:03 PM