Pythonのバージョンの確認方法のメモ【CPython参照】
- 作成日: 2022-05-23
- 更新日: 2023-12-25
- カテゴリ: Python
Pythonのバージョンの確認方法
Pythonのバージョンを確認したいケースは多いと思う。
この記事ではPythonのバージョンの確認方法についてメモを残すことにする。
具体的には↓のとおり。
- 実行ファイルのオプションによるバージョンの確認
- sysモジュールを使ったバージョンの確認
- platformモジュールを使ったバージョンの確認
関連記事
頭が悪い人のPythonのevalの使い方
頭がいい人のPythonのexitの使い方
状態遷移による文字列パースのテクニック【Python】
頭が悪い人のPythonのevalの使い方
頭がいい人のPythonのexitの使い方
状態遷移による文字列パースのテクニック【Python】
実行ファイルのオプションによるバージョンの確認
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をビルドしたコンパイラ
<!-- fix for ```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
```
筆者の環境ではブランチとリビジョンは確認できなかった。
ビルドとコンパイラは確認できた。