Cum pot verifica ce versiune de Python se execută script-ul meu?

Cum pot verifica ce versiune de Interpretorul Python este interpretarea mea script?

Comentarii la întrebare (2)
Soluția

Această informație este disponibilă în sys.versiune șir de caractere în sys module:

>>> import sys

Lizibil:

>>> 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)]

Pentru o prelucrare ulterioară:

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

Pentru a asigura un script ruleaza cu o minimă cerință versiune a interpretorului Python adăugați acest cod:

assert sys.version_info >= (2, 5)

Aceasta se compară majore și minore informațiile de versiune. Adaugă micro (=0, 1, etc) și chiar releaselevel (='alfa','final', etc) la tuplu cum vă place. Rețineți, totuși, că este aproape întotdeauna mai bine pentru a "rață" verificați dacă o anumită caracteristică este acolo, și dacă nu, soluție (sau pe cauțiune). Uneori caracteristici pleca în versiunile mai noi, fiind înlocuite de altele.

Comentarii (5)

Din linia de comandă (nota de capital 'V'):

python -V

Acest lucru este documentat în 'om python'.

Comentarii (2)

Îmi place sys.hexversion` pentru chestii de genul asta.

http://docs.python.org/library/sys.html#sys.hexversion

>>> import sys
>>> sys.hexversion
33883376
>>> '%x' % sys.hexversion
'20504f0'
>>> sys.hexversion < 0x02060000
True
Comentarii (8)

Cel mai bun pariu este, probabil, ceva de genul asta:

>>> 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
>>> 

În plus, puteți încheia dumneavoastră importurile într-o încercare simplă, care ar trebui să prindă erori de sintaxă. Și, la @Heikki's point, acest cod va fi compatibil cu mult mai vechi versiuni de python:

>>> try:
...     from my_module import twoPointSixCode
... except Exception: 
...     print "can't import, probably because your python is too old!"
>>>
Comentarii (4)

Folosi platforma's python_version din stdlib:

>>> from platform import python_version
>>> print(python_version())
2.7.8
Comentarii (1)

Pune ceva de genul:


#!/usr/bin/env/python
import sys
if sys.version_info
Comentarii (4)

Aici's o scurtă commandline versiune care iese imediat (la îndemână pentru script-uri și executarea automată):

python -c "print(__import__('sys').version)"

Sau doar cele majore, minore și micro:

python -c "print(__import__('sys').version_info[:1])" # (2,)
python -c "print(__import__('sys').version_info[:2])" # (2, 7)
python -c "print(__import__('sys').version_info[:3])" # (2, 7, 6)
Comentarii (5)

Cu "șase" modul, o poti face prin:

import six

if six.PY2:
  # this is python2.x
else:
  # six.PY3
  # this is python3.x
Comentarii (0)
import sys
sys.version.split(' ')[0]

sys.versiune vă oferă ceea ce vrei, alege doar primul numar :)

Comentarii (1)

Cel mai simplu mod

Doar de tip python în terminalul dumneavoastră și puteți vedea versiunea ca urmare

desktop:~$ python
Python 2.7.6 (default, Jun 22 2015, 18:00:18) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 
Comentarii (1)

Cum a spus Seth, principalul scenariu ar putea verifica sys.version_info (dar rețineți că nu't apar până 2.0, deci, dacă doriți pentru a sprijini versiuni mai vechi ai nevoie pentru a verifica o altă versiune proprietatea sys module).

Dar încă mai trebuie să aibă grijă de a nu folosind orice limbaj Python caracteristici în dosar, care nu sunt disponibile în vârstă Python versiuni. De exemplu, acest lucru este permis în Python 2.5 și mai târziu:

try:
    pass
except:
    pass
finally:
    pass

dar a câștigat't de lucru în vârstă Python versiuni, pentru că ai putea fi în afară SAU în cele din urmă se potrivesc încerca. Deci, pentru compatibilitate cu mai vechi Python versiuni aveți nevoie pentru a scrie:

try:
    try:
        pass
    except:
        pass
finally:
    pass
Comentarii (0)

Verificați versiunea Python: python-V " sau "python --version" sau " apt-cache politica python

puteți rula, de asemenea, whereis python pentru a vedea cât de multe versiuni sunt instalate.

Comentarii (2)

Mai multe răspunsuri sugerează deja cum să interogare curent versiunea python. A verificare programatic versiunea cerințe, am'd folosi una dintre următoarele două metode:

# Method 1: (see krawyoti's answer)
import sys
assert(sys.version_info >= (2,6))

# Method 2: 
import platform
from distutils.version import StrictVersion 
assert(StrictVersion(platform.python_version()) >= "2.6")
Comentarii (0)

Doar pentru distracție, următoarele este un mod de a face pe CPython 1.0-3.7b2, Pypy, Jython și Micropython. Acest lucru este mai mult o curiozitate decat o modalitate de a face aceasta în cod moderne. Am scris-o ca parte a http://stromberg.dnsalias.org/~strombrg/pitoni/ , care este un script pentru testare un fragment de cod pe mai multe versiuni de python de la o dată, astfel încât să puteți obține o simt pentru ceea ce python caracteristici sunt compatibile cu ce versiuni de python:

via_platform = 0
check_sys = 0
via_sys_version_info = 0
via_sys_version = 0
test_sys = 0
try:
    import platform
except (ImportError, NameError):
    # We have no platform module - try to get the info via the sys module
    check_sys = 1

if not check_sys:
    if hasattr(platform, "python_version"):
        via_platform = 1
    else:
        check_sys = 1

if check_sys:
    try:
        import sys
        test_sys = 1
    except (ImportError, NameError):
        # just let via_sys_version_info and via_sys_version remain False - we have no sys module
        pass

if test_sys:
    if hasattr(sys, "version_info"):
        via_sys_version_info = 1
    elif hasattr(sys, "version"):
        via_sys_version = 1
    else:
        # just let via_sys remain False
        pass

if via_platform:
    # This gives pretty good info, but is not available in older interpreters.  Also, micropython has a
    # platform module that does not really contain anything.
    print(platform.python_version())
elif via_sys_version_info:
    # This is compatible with some older interpreters, but does not give quite as much info.
    print("%s.%s.%s" % sys.version_info[:3])
elif via_sys_version:
    import string
    # This is compatible with some older interpreters, but does not give quite as much info.
    verbose_version = sys.version
    version_list = string.split(verbose_version)
    print(version_list[0])
else:
    print("unknown")
Comentarii (0)

Dacă doriți pentru a detecta pre-Python 3 și don't doriți să importați orice...

...puteți (ab)utilizarea listei de înțelegere de definire a domeniului evaluării și de a face modificări într-o o singură expresie:

is_python_3_or_above = (lambda x: [x for x in [False]] and None or x)(True)
Comentarii (0)

sys.version_info nu't par să se întoarcă un tuplu` ca de 3.7. Mai degrabă, acesta returnează o clasă specială, astfel încât toate exemplele folosind tupluri don't de lucru, pentru mine cel puțin. Aici's de ieșire de la o consola python:

>>> import sys
>>> type(sys.version_info)

Am'am constatat că, folosind o combinație de sys.version_info.majore " și " sys.version_info.minor pare a fi suficient. De exemplu,...

import sys
if sys.version_info.major > 3:
    print('Upgrade to Python 3')
    exit(1)

verifică dacă ai're de funcționare Python 3. Puteți verifica chiar și pentru mai multe versiuni specifice cu...


import sys
ver = sys.version_info
if ver.major > 2:
    if ver.major == 3 and ver.minor 
Comentarii (1)

Pentru a verifica versiunea Python pentru comenzi pe Windows, executați următoarea comandă la un prompt de comandă și verificați dacă codul de ieșire

c:\>python -V
Python 2.7.16

c:\>py -2 -V
Python 2.7.16

c:\>py -3 -V
Python 3.7.3

De asemenea, Pentru a vedea folderul de configurare pentru fiecare versiunea Python, executați următoarele comenzi:

For Python 2,'py -2 -m site'
For Python 3,'py -3 -m site'
Comentarii (0)
from sys import version_info, api_version, version, hexversion

print(f"sys.version: {version}")
print(f"sys.api_version: {api_version}")
print(f"sys.version_info: {version_info}")
print(f"sys.hexversion: {hexversion}")

ieșire

sys.versiune: 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v. 1900 64 de biți (AMD64)] sys.api_version: 1013 sys.version_info: sys.version_info(major=3, minor=6, micro=5, releaselevel='final', serial=0) sys.hexversion: 50726384

Comentarii (0)

Dacă sunteți de lucru pe linux doar da comanda "pitonul" ieșire va fi o astfel de prognoze

Python 2.4.3 (#1, Jun 11 2009, 14:09:37)

[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] pe linux2

Tip "ajutor", "autor", "credite" sau "licență" pentru mai multe informații.

Comentarii (2)