note.nkmk.me

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

Date: 2017-02-02 / Modified: 2018-10-22 / tags: Python

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

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

  • コマンドラインでバージョンを確認、表示: --version, -V
  • コード中でバージョンを取得: sys, platform
    • バージョン番号を含む様々な情報の文字列: sys.version
    • バージョン番号の数値のタプル: sys.version_info
    • バージョン番号の文字列: platform.python_version()
    • バージョン番号の文字列のタプル: platform.python_version_tuple()

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

Python本体のバージョンではなく、パッケージのバージョンを確認したい場合は以下の記事を参照。

スポンサーリンク

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

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コマンドに割り当てられている。

コード中でバージョンを取得: 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でメジャーバージョンを確認すればよい。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と異なりただのタプルなので、majorminorの名前での要素アクセスはできない。

スポンサーリンク
シェア
このエントリーをはてなブックマークに追加

関連カテゴリー

関連記事