スクリプトで Python バージョンを確認する方法

  1. Python バージョンを確認するための sys.version メソッド
  2. Python バージョンを確認するための sys.version_info メソッド
  3. Python のバージョンを確認するための platform.python_version() メソッド
  4. Python バージョンをチェックする six モジュールメソッド

異なる状況では、Python バージョン、またはより正確には、Python スクリプトファイルを実行している Python インタープリターバージョンを知る必要があります。

Python バージョンを確認するための sys.version メソッド

このバージョン情報は、sys モジュールの sys.version から取得できます。

Python 2.x で

>>> import sys
>>> sys.version
'2.7.10 (default, May 23 2015, 09:44:00) [MSC v.1500 64 bit (AMD64)]'

または Python 3.x で

>>> import sys
>>> sys.version
'3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)]'

Python バージョンを確認するための sys.version_info メソッド

sys.version は、現在の Python インタープリターの人間が読めるバージョン情報を含む文字列を返します。しかし、「メジャーリリース番号」や「マイクロリリース番号」などの情報は、コードでさらに使用するために追加の処理を導出する必要があります。

sys.version_info は、バージョン情報を名前付きタプルとして返すことにより、この問題を簡単に解決します。返されるバージョンデータは、

データ 説明
major メジャーリリース番号
micro パッチリリース番号
minor マイナーリリース番号
releaselevel alphabetacandidate または release
serial シリアルリリース番号
>>> import sys
>>> sys.version_info
sys.version_info(major=2, minor=7, micro=10, releaselevel='final', serial=0)

>> ===<=、または < 演算子を使用するだけで、現在のバージョンと参照バージョンを比較できます。

>>> import sys
>>> sys.version_info >= (2, 7)
True
>>> sys.version_info >= (2, 7, 11)
False

スクリプトに assert を追加して、スクリプトが最小限の Python バージョンの要件で実行されるようにすることができます。

import sys
assert sys.version_info >= (3, 7)

インタープリターがバージョンの要件を満たさない場合、AssertionError が発生します。

Traceback (most recent call last):
  File "C:\test\test.py", line 4, in <module>
    assert sys.version_info >= (3, 7)
AssertionError

Python のバージョンを確認するための platform.python_version() メソッド

platform モジュールの python_version() は、Python バージョンを文字列 major.minor.patchlevel として返します。

>>> from platform import python_version
>>> python_version()
'3.7.0'

または sys.version_info と同様に、platform には Python バージョンを文字列のタプル (major, minor, patchlevel) として返すメソッドもあります-python_version_tuple()

>>> import platform
>>> platform.python_version_tuple()
('3', '7', '0')

Python バージョンをチェックする six モジュールメソッド

Python のバージョンが Python 2.x か Python 3.x かを確認するだけであれば、six モジュールを使用してジョブを実行できます。

import six
if six.PY2:
    print "Python 2.x"
if six.PY3:
    print("Python 3.x")
comments powered by Disqus