Pregunta ¿Cómo puedo verificar qué versión de Python está ejecutando mi script?


¿Cómo puedo verificar qué versión de Python Interpreter está interpretando mi script?


843
2017-07-07 16:17


origen


Respuestas:


Esta información está disponible en sys.version cadena en el sys módulo:

>>> import sys

Humano legible:

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

Para su posterior procesamiento:

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

Para garantizar que una secuencia de comandos se ejecuta con un requisito de versión mínima del intérprete de Python, agregue esto a su código:

assert sys.version_info >= (2,5)

Esto compara la información de versión mayor y menor. Agregar micro (=0, 1, etc.) e incluso releaselevel (='alpha','final', etc) a la tupla como quieras. Tenga en cuenta, sin embargo, que casi siempre es mejor "esquivar" comprobar si una determinada característica está allí, y si no, solución alternativa (o rescatar). Algunas veces, las funciones desaparecen en versiones más recientes y son reemplazadas por otras.


1042
2017-07-07 16:20



Desde la línea de comando (observe la letra mayúscula 'V'):

python -V

Esto está documentado en 'man python'.


266
2017-07-22 19:50



me gusta sys.hexversion para cosas como esta.

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

>>> import sys
>>> sys.hexversion
33883376
>>> '%x' % sys.hexversion
'20504f0'
>>> sys.hexversion < 0x02060000
True

89
2018-06-10 20:08



Tu mejor opción es probablemente algo así:

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

Además, siempre puede ajustar sus importaciones en una simple prueba, que debería detectar errores de sintaxis. Y, para el punto de @ Heikki, este código será compatible con versiones mucho más antiguas de python:

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

60
2018-06-10 16:06



Utilizar platformes python_version desde el stdlib:

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

47
2017-08-25 01:11



Pon algo así como:

#!/usr/bin/env/python
import sys
if sys.version_info<(2,6,0):
  sys.stderr.write("You need python 2.6 or later to run this script\n")
  exit(1)

en la parte superior de tu script

Tenga en cuenta que, dependiendo de qué más esté en su script, las versiones anteriores de python que no sean el destino pueden incluso no cargar el script, por lo que no llegarán lo suficientemente lejos como para informar este error. Como solución alternativa, puede ejecutar lo anterior en un script que importe el script con el código más moderno.


46
2018-06-10 16:08



Aquí hay una breve versión de la línea de comandos que sale inmediatamente (útil para scripts y ejecución automatizada):

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

O solo el mayor, menor y 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)

20
2017-09-02 20:02



La forma más sencilla

Simplemente escriba python en su terminal y puede ver la versión  como siguiendo

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

6
2018-02-09 14:11



import sys
sys.version.split(' ')[0]

sys.version te da lo que quieres, solo elige el primer número :)


5
2017-07-07 16:20



Como dijo Seth, el guión principal podría verificar sys.version_info (pero tenga en cuenta que eso no apareció hasta 2.0, por lo que si desea admitir versiones anteriores, deberá verificar otra propiedad de la versión del módulo sys).

Pero aún debe tener cuidado de no utilizar ninguna característica del lenguaje Python en el archivo que no esté disponible en las versiones anteriores de Python. Por ejemplo, esto está permitido en Python 2.5 y posteriores:

try:
    pass
except:
    pass
finally:
    pass

pero no funcionará en las versiones anteriores de Python, porque solo podría tenerlo, excepto O, finalmente, coincidir con la prueba. Por lo tanto, para compatibilidad con las versiones anteriores de Python necesita escribir:

try:
    try:
        pass
    except:
        pass
finally:
    pass

5
2018-06-10 16:12



Verifique la versión de Python: python -V o python --version o apt-cache policy python

también puedes correr whereis python para ver cuántas versiones están instaladas.


3
2018-04-11 02:01