[updated for 2021]
(Independientemente de si está en Mac, Linux o Windows 🙂
Si está confundido acerca de cómo iniciar la última versión de Python, en la mayoría de las plataformas es el caso que python3
deja tu python2
instalación intacta (debido a las razones de compatibilidad anteriores); por lo que puede iniciar python3 con el python3
mando.
Históricamente…
La convención de nomenclatura es que, en general, la mayoría de los scripts llamarán a python2 o python3 explícitamente. Esto sucedió debido a un necesidad de compatibilidad con versiones anteriores.
Aunque técnicamente Python ni siquiera garantiza la compatibilidad con versiones anteriores entre versiones menores, Python3 De Verdad rompe la compatibilidad con versiones anteriores. En ese momento, los programas que invocan ‘python
‘estaban esperando python2 (que era la versión principal en ese momento). Los sistemas extremadamente antiguos pueden tener programas y scripts que esperan python
= python2, y cambiar esto rompería esos programas y scripts.
En el momento en que se escribió esta respuesta, OP no debería haber cambiado esto debido a que mantiene la compatibilidad con los scripts antiguos.
Alrededor del año 2021 …
Hoy en día, muchos años después de la transición python2-> python3, la mayoría del software se refiere explícitamente a python2 o python3 (al menos en Linux). Por ejemplo, pueden llamar #!/usr/bin/env python2
o #!/usr/bin/env python3
. Esto tiene por ejemplo (python-is-python3-package) liberó el comando de Python para que se pueda configurar a un valor predeterminado del usuario, pero realmente depende del sistema operativo.
La prescripción de cómo las distribuciones deben manejar el python
comando fue escrito en 2011 como PEP 394 – El comando «python» en sistemas similares a Unix. Se actualizó por última vez en junio de 2019.
Básicamente, si está escribiendo una biblioteca, debe usar las versiones más específicas de Python que pueda usar. De lo contrario, como usuario final, puede cambiar el nombre de este para su uso personal (aunque es posible que su sistema operativo o distribución no lo hagan tan fácil).
Alias de Shell:
Sin embargo, puede crear un alias personalizado en su shell. La forma en que lo haga depende del caparazón, pero tal vez pueda hacerlo alias py=python3
y colóquelo en su archivo de inicio de shell. Esto solo funcionará en su computadora local (como debería), y es algo innecesario en comparación con simplemente escribirlo (a menos que invoque el comando constantemente).
Los usuarios confundidos no deben intentar crear alias o entornos virtuales o similares que hagan Esto es aceptable hoy en día, pero PEP 394 sugiere animar a los usuarios a utilizar un virtualenv en lugar de.python
ejecutar python3
; esta es mala forma.
Diferentes versiones 3. * o 2. * versiones:
En el caso extremadamente improbable de que si alguien llega a esta pregunta con dos versiones de python3, por ejemplo, 3.1 vs 3.2, y está confundido de que de alguna manera ha instalado dos versiones de Python, esto posiblemente se deba a que ha realizado instalaciones manuales y / o manuales. Puede usar las instalaciones estándar de instalación / desinstalación / administración de paquetes / programas de su sistema operativo para ayudar a rastrear las cosas, y tal vez (a menos que esté haciendo un trabajo de desarrollo que sorprendentemente se vea afectado por los pocos cambios incompatibles con versiones anteriores entre versiones menores) elimine la versión anterior ( o hacer make uninstall
si hizo una instalación manual). Si necesita dos versiones, vuelva a configurar su $PATH
variable por lo que la versión ‘predeterminada’ que desea está al frente; o si está utilizando la mayoría de las distribuciones de Linux, el comando que está buscando es sudo update-alternatives
. Asegúrese de que cualquier programa que ejecute y que necesite acceso a las versiones anteriores pueda ser invocado correctamente por su entorno de llamada o shell (configurando el var PATH
en ese entorno).
Un poco sobre $ PATH
nota al margen: Para elaborar un poco sobre PATH: las formas habituales en que se seleccionan los programas es a través de la PATH
(echo $PATH
en Linux y Mac) variable de entorno. Siempre puede ejecutar un programa con la ruta completa, por ejemplo /usr/bin/🔳 some args
, o cd /usr/bin
luego ./🔳 some args
(reemplace el espacio en blanco con el programa ‘echo’ que mencioné anteriormente, por ejemplo), pero de lo contrario, escriba 🔳 some args
no tiene sentido sin PATH
env variable que declara los directorios en los que implícitamente podemos buscar y luego ejecutar archivos (si /usr/bin
no estaba en PATH
, entonces diría 🔳: command not found
). El primer comando coincidente en el primer directorio es el que se ejecuta (el which
comando en Linux y Mac le dirá qué subruta es esta). Por lo general, es (por ejemplo, en Linux, pero similar en Mac) algo como /usr/bin/python
que es un enlace simbólico a otros enlaces simbólicos a la versión final en algún lugar, por ejemplo:
% echo $PATH
/usr/sbin:/usr/local/bin:/usr/sbin:usr/local/bin:/usr/bin:/bin
% which python
/usr/bin/python
% which python2
/usr/bin/python2
% ls -l /usr/bin/python
lrwxrwxrwx 1 root root 7 Mar 4 2019 /usr/bin/python -> python2*
% ls -l /usr/bin/python2
lrwxrwxrwx 1 root root 9 Mar 4 2019 /usr/bin/python2 -> python2.7*
% ls -l /usr/bin/python2.7
-rwxr-xr-x 1 root root 3689352 Oct 10 2019 /usr/bin/python2.7*
% which python3
/usr/bin/python3
% ls -l /usr/bin/python3
lrwxrwxrwx 1 root root 9 Mar 26 2019 /usr/bin/python3 -> python3.7*
% ls -l /usr/bin/python3.7
-rwxr-xr-x 2 root root 4877888 Apr 2 2019 /usr/bin/python3.7*
% ls -l /usr/bin/python*
lrwxrwxrwx 1 root root 7 Mar 4 2019 /usr/bin/python -> python2*
lrwxrwxrwx 1 root root 9 Mar 4 2019 /usr/bin/python2 -> python2.7*
-rwxr-xr-x 1 root root 3689352 Oct 10 2019 /usr/bin/python2.7*
lrwxrwxrwx 1 root root 9 Mar 26 2019 /usr/bin/python3 -> python3.7*
-rwxr-xr-x 2 root root 4877888 Apr 2 2019 /usr/bin/python3.7*
lrwxrwxrwx 1 root root 33 Apr 2 2019 /usr/bin/python3.7-config -> x86_64-linux-gnu-python3.7-config*
-rwxr-xr-x 2 root root 4877888 Apr 2 2019 /usr/bin/python3.7m*
lrwxrwxrwx 1 root root 34 Apr 2 2019 /usr/bin/python3.7m-config -> x86_64-linux-gnu-python3.7m-config*
lrwxrwxrwx 1 root root 16 Mar 26 2019 /usr/bin/python3-config -> python3.7-config*
lrwxrwxrwx 1 root root 10 Mar 26 2019 /usr/bin/python3m -> python3.7m*
lrwxrwxrwx 1 root root 17 Mar 26 2019 /usr/bin/python3m-config -> python3.7m-config*
nota al margen2: (En el caso más raro, un programa de Python invoca un subprograma con el subprocess
módulo, para especificar qué programa ejecutar, se pueden modificar las rutas de los subprocesos con sys.path
desde el módulo sys o el PYTHONPATH
variable de entorno establecida en el padre, o especificando la ruta completa … pero dado que la ruta es heredada por procesos secundarios, esto no es un problema de forma remota).