Kaip patikrinti, kokia "Python" versija paleidžiamas mano scenarijus?

Kaip patikrinti, kokia "Python Interpreter" versija interpretuoja mano scenarijų?

Sprendimas

Ši informacija pateikiama modulio sys.version eilutėje sys:

>>> import sys

Žmogaus skaitoma:

>>> print(sys.version)  # parentheses necessary in python 3.       
2.5.2 (r252:60911, Jul 31 2008, 17:28:52) 
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)]

Tolesniam apdorojimui:

>>> sys.version_info
(2, 5, 2, 'final', 0)
# or
>>> sys.hexversion
34014192

Norėdami užtikrinti, kad scenarijus veiktų su minimaliu "Python" interpreterio versijos reikalavimu, į savo kodą įtraukite šį įrašą:

assert sys.version_info >= (2, 5)

Taip palyginama pagrindinės ir mažesnės versijos informacija. Į tuple pridėkite mikro (=0, 1 ir t. t.) ir net releaselevel (='alpha','final' ir t. t.), kaip jums patinka. Tačiau atkreipkite dėmesį, kad beveik visada geriau "duck" patikrinti, ar tam tikra funkcija yra, o jei ne, apeiti (arba atsisakyti). Kartais naujesnėse versijose funkcijos išnyksta, jas pakeičia kitos.

Komentarai (5)

Geriausia būtų rinktis tokį variantą:

>>> import sys
>>> sys.version_info
(2, 6, 4, 'final', 0)
>>> if not sys.version_info[:2] == (2, 6):
...    print "Error, I need python 2.6"
... else:
...    from my_module import twoPointSixCode
>>> 

Be to, importą visada galite aprėpti paprastu bandymu, kuris turėtų išaiškinti sintaksės klaidas. Be to, @Heikki's pastaba, šis kodas bus suderinamas su daug senesnėmis "Python" versijomis:

>>> try:
...     from my_module import twoPointSixCode
... except Exception: 
...     print "can't import, probably because your python is too old!"
>>>
Komentarai (4)
import sys
sys.version.split(' ')[0]

sys.version duoda tai, ko norite, tiesiog pasirinkite pirmąjį skaičių :)

Komentarai (1)