Hoe de Python-versie in de scripts te controleren

  1. sys.version Methode
  2. sys.version_info Methode
  3. platform.python_version() Methode
  4. six Module methode

In verschillende omstandigheden moeten we de Python-versie kennen, of beter gezegd, de Python-interpretatieversie die het Python-scriptbestand uitvoert.

sys.version Methode

Deze versie-informatie kan worden opgehaald sys.version in de sys module.

In Python 2.x

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

of in 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)]'

sys.version_info Methode

sys.version geeft een string terug die de voor mensen leesbare versie-informatie van de huidige Python-interpreter bevat. Maar de informatie zoals major release number en micro release number moet extra worden verwerkt voor verder gebruik in de codes.

sys.version_info lost dit probleem eenvoudig op door de versie-informatie te retourneren als een benoemde tuple. De versiegegevens die het retourneert zijn,

Gegevens Beschrijving
major Groot releasenummer
micro Patch-releasenummer
minor Klein releasenummer
releaselevel alpha , beta , candidate Of release
serial Serienummer van vrijgave
>>> import sys
>>> sys.version_info
sys.version_info(major=2, minor=7, micro=10, releaselevel='final', serial=0)

Je kan de huidige versie met de referentie-versie gewoon op basis van vergelijking > , >= , == , <= of < operators.

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

We kunnen een assert in de scripts toevoegen om ervoor te zorgen dat het script wordt uitgevoerd met de vereiste minimale Python-versie.

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

Het zal een verhogen AssertionError als de tolk niet aan de versie-eis voldoet.

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

platform.python_version() Methode

python_version() in platform module retourneert de Python-versie als tekenreeks major.minor.patchlevel.

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

Of vergelijkbaar met sys.version_info , heeft platform ook een methode om de Python-versie te retourneren als tuple (major, minor, patchlevel) van tekenreeksen - python_version_tuple()

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

six Module methode

Als u alleen moet controleren of de Python-versie Python 2.x of Python 3.x is, kan je de six module gebruiken om het werk te doen.

import six
if six.PY2:
    print "Python 2.x"
if six.PY3:
    print("Python 3.x")