¿Qué versión de Python tengo?

73

¿Cómo puedo saber qué versiones de Python tengo?

Estoy usando Ubuntu 14.04 (Trusty Tahr).

TechJhola
fuente
44
Además, una forma rápida de ver qué binarios de Python están instalados es:ls /usr/bin | grep python
Tejas Kale
1
@TejasKale Es mejor ejecutarlo ls /usr/bin/python*(o ls /usr/bin/*python*si realmente desea archivos con python cualquier parte del nombre). De esa manera, lsaún formatea su salida para un terminal (y obtienes múltiples columnas y, con el lsalias predeterminado en Ubuntu, la coloración).
Eliah Kagan

Respuestas:

86

Puede usar python -V(et al.) Para mostrarle la versión de Python a la que se pythonresuelve el comando. Si eso es todo lo que necesita, ya está. Pero para ver cada versión de Python en su sistema se necesita un poco más.

En Ubuntu podemos verificar la resolución con readlink -f $(which python). En casos predeterminados en 14.04 esto simplemente apuntará a /usr/bin/python2.7.

Podemos encadenar esto para mostrar la versión de esa versión de Python:

$ readlink -f $(which python) | xargs -I % sh -c 'echo -n "%: "; % -V'
/usr/bin/python2.7: Python 2.7.6

Pero esto todavía solo nos dice cuál es nuestra pythonresolución actual . Si estuviéramos en un Virtualenv (un sistema común de gestión de pila de Python) pythonpodría resolver a una versión diferente:

$ readlink -f $(which python) | xargs -I % sh -c 'echo -n "%: "; % -V'
/home/oli/venv/bin/python: Python 2.7.4

Esta es la salida real.

El hecho es que podría haber cientos de versiones diferentes de Python secretadas alrededor de su sistema, ya sea en rutas que se agregan contextualmente o que viven bajo diferentes nombres binarios (como python3).

Si suponemos que un binario de Python siempre se llamará python<something>y será un archivo binario, simplemente podemos buscar en todo el sistema archivos que coincidan con esos criterios:

$ sudo find / -type f -executable -iname 'python*' -exec file -i '{}' \; | awk -F: '/x-executable; charset=binary/ {print $1}' | xargs readlink -f | sort -u | xargs -I % sh -c 'echo -n "%: "; % -V'
/home/oli/venv/bin/python: Python 2.7.4
/media/ned/websites/venvold/bin/python: Python 2.7.4
/srv/chroot/precise_i386/usr/bin/python2.7: Python 2.7.3
/srv/chroot/trusty_i386/usr/bin/python2.7: Python 2.7.6
/srv/chroot/trusty_i386/usr/bin/python3.4: Python 3.4.0
/srv/chroot/trusty_i386/usr/bin/python3.4m: Python 3.4.0
/usr/bin/python2.7: Python 2.7.6
/usr/bin/python2.7-dbg: Python 2.7.6
/usr/bin/python3.4: Python 3.4.0
/usr/bin/python3.4dm: Python 3.4.0
/usr/bin/python3.4m: Python 3.4.0
/web/venvold/bin/python: Python 2.7.4

Obviamente, es un comando bastante horrible, pero nuevamente es un resultado real y parece haber hecho un trabajo bastante completo.

Oli
fuente
Recibo lo siguiente, y no estoy seguro de lo que significa: readlink: extra operand '/usr/bin/python2.7' Try 'readlink --help' for more information.
hello_there_andy
Supuse python -vque devolvería la versión y ejecuté esto como root. imprimió una larga lista de cosas, pero en la parte superior decía installing zipimport hooky ahora parece que estoy en un programa del que no tengo idea cómo salir, y mucho menos ¿desinstalarlo? ¿Puedes ayudarme aquí?
PrimitiveNom
2
@Anthony La marca -Vde la versión distingue entre mayúsculas y minúsculas. python -vponerlo en una consola Python con mensajes detallados activados. Control + D para salir. O escriba exit()y presione regresar.
Oli
@hello_there_andy Supongo que cometiste un error al copiar el comando.
wjandrea
63

Escriba siguiente en el terminal ( Ctrl+ Alt+ T):

python -V

o

python --version

Puede encontrar una lista de opciones / parámetros para muchos comandos en el terminal escribiendo el comando seguido de --help

Ejemplo:

python --help

Manual / páginas de manual también disponibles para la mayoría de tales CLI que puede ser visualizada por man <command>(Ej: man python)

De man python:

COMMAND LINE OPTIONS
        -V ,  --version
              Prints the Python version number of the executable and exits.

También está python3instalado en muchas máquinas, por lo que puede hacer:

python3 --version

para averiguar qué python 3.x está ejecutando.

dudoso
fuente
2
Vale la pena señalar, como @Florian Diesch a continuación alude a que probablemente tenga múltiples versiones de "python". La llamada predeterminada "python" apunta a una instalación de python 2.7, aunque ubuntu 14.04 también viene con python 3.0.
Mitch
32
python --version

y

python2 --version

muestra la versión de Python 2.x,

python3 --version

la versión instalada de Python 3.x

Florian Diesch
fuente
8

Cuando ejecuta pythonen la terminal, producirá una salida como esta:

Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Ver la primera línea - Python 2.7.6.

También corre python3. Tengo 3.4.1

Python 3.4.1 (default, Jul 31 2014, 12:46:17) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

Sin embargo, esto no los mostrará a todos. Si tiene 2 o más versiones de Python 3.Xx, solo verá la última.

Por defecto en 14.04, tiene 2.7.6 y 3.4.0. Como puede ver, he actualizado a 3.4.1. Sé que todavía tengo 3.4.0 porque cuando voy a /usr/binver python3.4, y si corro /usr/bin/python3.4en la línea de comando, obtengo 3.4.0, y ejecutar /usr/local/bin/python3.4me da 3.4.1

Mis pronombres son El / El

Tim
fuente
"Si tiene 2 o más versiones de Python 3.Xx, solo verá la última". ¿No mostrará en su lugar el que contenga su directorio contenedor primero en la PATHvariable de entorno? ¿Por qué ejecutar python3siempre ejecuta la versión (sub) más alta de python3 que está instalada? O, en la práctica, ¿no mostrará a qué versión /usr/bin/python3apunta el enlace simbólico, que no necesita ser la última?
Eliah Kagan
@Eliah No tengo idea, pero algunos programas lo toman desde allí y otros desde el /usr/bin...
Tim
2
Bueno, cuando se trata de ejecutar programas de python, dependiendo de cómo se ejecuten, la línea hashbang se puede usar para determinar qué python actúa como intérprete ( detalles ; también tenga en cuenta el uso de envlíneas hashbang para encontrar el interpretado que pueda ser el sistema -preferido en común en los scripts de Python ). No estoy seguro de si eso es lo que quieres decir con diferencias entre algunos programas y otros.
Eliah Kagan
No, un usuario dijo que inactivo se ejecutó con 3.4.0 y la línea de comando con 3.4.1 ...
Tim
5

También puede verificar la versión de Python desde el propio código utilizando el platformmódulo de la biblioteca estándar. Hay dos funciones: platform.python_version()(devuelve cadena) y platform.python_version_tuple()(devuelve tupla). Guión:

import platform

print(platform.python_version())
print(platform.python_version_tuple())

Corriendo:

$ python test.py 
3.4.1
('3', '4', '1')
$ python2.7 test.py 
2.7.8
('2', '7', '8')
Nykakin
fuente
3
Creo que es más común usar sys.versiono sys.version_info.
Matt Nordhoff
5

Si desea ver todas las versiones de Python disponibles como comandos, ejecute compgen -c python. P.ej:

$ compgen -c python
python2.7
python3.4m
python3.4
python3m
python
python3
python2

Si desea obtener la versión de cada uno de los anteriores, aquí hay una línea:

$ for p in $(compgen -c python); do printf "%-16s" $p; $p --version; done
python2.7      Python 2.7.6
python3.4m     Python 3.4.3
python3.4      Python 3.4.3
python3m       Python 3.4.3
python         Python 2.7.6
python3        Python 3.4.3
python2        Python 2.7.6

Actualizar: python*-config

Me di cuenta de que los python*-configprogramas no admiten la --versionbandera. Por ejemplo:

$ python3-config --version
Usage: /usr/bin/python3-config --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--configdir

Para que pueda filtrarlos grep -v, por ejemplo:

compgen -c python | grep -v -- '-config$'
wjandrea
fuente
Esta debería ser la mejor respuesta, supongo.
Solomon Vimal
2

Abra fácilmente la terminal y haga lo siguiente:

Escribir

python

para verificar su versión 2.x En mi caso, aparecerá:

Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.

Para el 3.x, escriba:

python3

En mi caso, parece:

Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.

Para ambos casos, para salir de Python Shell, escriba:

 exit()
Willington
fuente
1
  • En terminal de shell

    $ which -a pythonenumera todos sus python.

    $ which -a python2.7enumera todos sus python2.7.

    $ /usr/bin/python -Vda información sobre la versión de /usr/bin/python.

  • comprobar en el script de Python

Aquí hay una ilustración en ipython shell:

In [1]: import sys

In [2]: sys.version
2.7.11 |Anaconda 2.5.0 (64-bit)| (default, Dec  6 2015, 18:08:32) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]

In [3]: sys.version_info
sys.version_info(major=2, minor=7, micro=11, releaselevel='final', serial=0)

In [4]: sys.version_info >= (2,7)
Out[4]: True

In [5]: sys.version_info >= (3,)
Out[5]: False
Sotavento
fuente
Supuse python -vque devolvería la versión y ejecuté esto como root. imprimió una larga lista de cosas, pero en la parte superior decía installing zipimport hooky ahora parece que estoy en un programa del que no tengo idea cómo salir, y mucho menos ¿desinstalarlo? ¿Puedes ayudarme aquí?
PrimitiveNom