Pythonのバージョンの確認方法のメモ【CPython参照】

478, 2022-05-23

目次

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

筆者の環境ではブランチとリビジョンは確認できなかった。
ビルドとコンパイラは確認できた。



この記事のアンケートを送信する