Pythonのバージョンの確認方法のメモ【CPython参照】
目次
Pythonのバージョンの確認方法
Pythonのバージョンを確認したいケースは多いと思う。
この記事ではPythonのバージョンの確認方法についてメモを残すことにする。
具体的には↓のとおり。
実行ファイルのオプションによるバージョンの確認
sysモジュールを使ったバージョンの確認
platformモジュールを使ったバージョンの確認
関連記事
実行ファイルのオプションによるバージョンの確認
Pythonインタプリタ(実行ファイル)を実行して得られるバージョン情報。
具体的にはオプション--version
, -V
, -VV
を使う。
--version
の実行結果は例えば↓のようになる。
$ python --version Python 3.8.10
-V
の実行結果は↓のとおり。
$ python -V Python 3.8.10
-VV
を使うと詳細なバージョン情報が見られる。
$ python -VV Python 3.8.10 (default, Mar 15 2022, 12:22:08) [GCC 9.4.0]
↑の出力ではPythonがGCC 9.4.0でビルドされたことがわかる。
Pythonインタプリタがどの環境でビルドされたか知りたい場合は-VV
を使うといいだろう。
sysモジュールを使ったバージョンの確認
コード上でPythonのバージョンを確認したい場合はsys
モジュールが使える。
sys
モジュールはCPythonではPython/sysmodule.c
で定義されている。
sys
モジュール内のバージョン情報の初期化は_PySys_InitCore()
関数で行われている。
たとえばsys.version
は
SET_SYS_FROM_STRING("version", Py_GetVersion());
というコードで初期化されている。
Py_GetVersion()
関数はgetversion.c
で定義されている。
内部ではPY_VERSION
, Py_GetBuildInfo()
, Py_GetCompiler()
を参照している。
sys.version
sys.version
を参照すると詳細なバージョン情報の文字列が得られる。
import sys print(type(sys.version)) # <class 'str'> print(sys.version) # 3.8.10 (default, Mar 15 2022, 12:22:08) # [GCC 9.4.0]
一見するとオプション-VV
の出力に似ているが、よく見ると若干違っているのがわかる。
sys.version_info
sys.version_info
はメジャーバージョン番号やマイナーバージョン番号などがタプルになっているオブジェクト。
これを参照するとメジャー、マイナー、マイクロ、リリースレベル、そしてシリアルなどがわかる。
import sys print(type(sys.version_info)) # <class 'sys.version_info'> print(sys.version_info) # sys.version_info(major=3, minor=8, micro=10, releaselevel='final', serial=0) print('メジャー', sys.version_info[0]) # メジャー 3 print('マイナー', sys.version_info[1]) # マイナー 8 print('マイクロ', sys.version_info[2]) # マイクロ 10 print('リリースレベル', sys.version_info[3]) # リリースレベル final print('シリアル', sys.version_info[4]) # シリアル 0
hexversion
16進数で表されたバージョン番号はsys.hexversion
で取得できる。
import sys print(type(sys.hexversion)) # <class 'int'> print(sys.hexversion) # 50858736
api_version
Python APIのバージョンはsys.api_version
で取得できる。
import sys print(type(sys.api_version)) # <class 'int'> print(sys.api_version) # 1013
platformモジュールを使ったバージョンの確認
platform
モジュールを使ってもバージョンが確認できる。
platform
はCPythonではLib/platform.py
で定義されている。
内部ではsys
モジュールのバージョン情報を使っている。
python_version()
platform.python_version()
関数でバージョン番号を表す文字列を取得できる。
import platform v = platform.python_version() print(type(v)) # <class 'str'> print(v) # 3.8.10
python_version_tuple()
platform.python_version_tuple()
関数の結果はメジャー、マイナー、マイクロ番号が文字列のタプルになっている。
import platform vt = platform.python_version_tuple() print(type(vt)) # <class 'tuple'> print(vt) # ('3', '8', '10')
<class 'tuple'> ('3', '8', '10')
バージョンその他
platform
にはバージョン番号のほかに以下を確認できる。
python_branch() ... Pythonが実装されたブランチ
python_revision() ... Pythonが実装されたリビジョン
python_build() ... Pythonがビルドされた番号と日付の文字列
python_compiler() ... Pythonをビルドしたコンパイラ
import platform print('ブランチ', platform.python_branch()) # ブランチ print('リビジョン', platform.python_revision()) # リビジョン print('ビルド', platform.python_build()) # ビルド ('default', 'Mar 15 2022 12:22:08') print('コンパイラ', platform.python_compiler()) # コンパイラ GCC 9.4.0
筆者の環境ではブランチとリビジョンは確認できなかった。
ビルドとコンパイラは確認できた。