¿Cómo cambiar la versión predeterminada de Python?

Respuestas:

115

Esto probablemente sea deseable para la compatibilidad con versiones anteriores.

Python3 rompe la compatibilidad con versiones anteriores, y los programas que invocan 'python' probablemente esperan python2. Probablemente tenga muchos programas y scripts de los que ni siquiera sabe que esperan python = python2, y cambiar esto rompería esos programas y scripts.

La respuesta que probablemente esté buscando es No debería cambiar esto .

Sin embargo, puede crear un alias personalizado en su shell. La forma en que lo haga depende del caparazón, pero tal vez pueda hacerloalias py=python3

Si está confundido acerca de cómo iniciar la última versión de Python, es al menos el caso en Linux que python3deja su python2instalación intacta (debido a las razones de compatibilidad anteriores) ; por lo tanto, puede iniciar python3 con el python3comando.

ninjagecko
fuente
36
Esta es información útil, pero la pregunta era "cómo puedo cambiar la versión predeterminada de Python". ¿Podemos agregar algo para ayudar a las personas que intentan hacer eso?
dmeyerson
En Mac, la instalación de Python3 también deja intacto a Python2. Pero me parece que hay una manera de cambiar el valor predeterminado que se ejecuta cuando solo se escribe "python". Encontré la opción una vez. He optado por dejarlo como está donde "python --version" muestra 2.7.12 y "python3 --version" muestra 3.7.0. Estoy de acuerdo con dmeyerson arriba en que la pregunta es cómo cambiarlo. Tu consejo es bueno, pero hay una manera de cambiarlo si es necesario (o realmente, realmente quieres).
Rich Sadowsky
3
> La respuesta que probablemente esté buscando es No debería cambiar esto. ¡Y aquí pensé que era "cómo puedo cambiar esto"!
duane
2
Esta respuesta es correcta. No cambie lo que pythonapunta a nivel del sistema, ya que puede romper componentes importantes de su sistema operativo si lo hace . En su lugar, use una instalación de Python 3 separada y virtualen para obtener un Python predeterminado "local".
Martijn Pieters
50

Verifique la ubicación de Python 3

$ which python3
/usr/local/bin/python3

Escribir alias en bash_profile

vi ~/.bash_profile  
alias python='/usr/local/bin/python3'

Recargar bash_profile

source ~/.bash_profile

Confirmar el comando de Python

$ python --version
Python 3.6.5
Ryosuke Hujisawa
fuente
2
esta es una mala solución. Como se menciona en la respuesta aceptada, $ pythonestá reservado para python 2. Cualquier programa que ejecute en su computadora que espere que python 2 reciba python 3 debido al alias, lo que podría tener consecuencias negativas imprevistas.
Shonin
Las intenciones de Apple son irrelevantes para la pregunta.
duane
45

En Mac OS X, utilizando el instalador de python.org como aparentemente lo ha hecho, debe invocar Python 3 con python3, no python. Actualmente está reservado para las versiones de Python 2. También puede utilizar python3.2para invocar específicamente esa versión.

$ which python
/usr/bin/python
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ cd /Library/Frameworks/Python.framework/Versions/3.2/bin/
$ ls -l
total 384
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 2to3@ -> 2to3-3.2
-rwxrwxr-x  1 root  admin    140 Feb 20 11:14 2to3-3.2*
lrwxr-xr-x  1 root  admin      7 Apr 28 15:51 idle3@ -> idle3.2
-rwxrwxr-x  1 root  admin    138 Feb 20 11:14 idle3.2*
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 pydoc3@ -> pydoc3.2
-rwxrwxr-x  1 root  admin    123 Feb 20 11:14 pydoc3.2*
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3*
lrwxr-xr-x  1 root  admin     12 Apr 28 15:51 python3-32@ -> python3.2-32
lrwxr-xr-x  1 root  admin     16 Apr 28 15:51 python3-config@ -> python3.2-config
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 python3.2-32*
lrwxr-xr-x  1 root  admin     17 Apr 28 15:51 python3.2-config@ -> python3.2m-config
-rwxrwxr-x  1 root  admin  25784 Feb 20 11:14 python3.2m*
-rwxrwxr-x  1 root  admin   1865 Feb 20 11:14 python3.2m-config*
lrwxr-xr-x  1 root  admin     10 Apr 28 15:51 pythonw3@ -> pythonw3.2
lrwxr-xr-x  1 root  admin     13 Apr 28 15:51 pythonw3-32@ -> pythonw3.2-32
-rwxrwxr-x  1 root  admin  25624 Feb 20 11:14 pythonw3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 pythonw3.2-32*

Si también instaló un Python 2 de python.org, tendría un directorio bin de marco similar sin nombres de archivo superpuestos (excepto 2to3).

$ open /Applications/Python\ 2.7/Update\ Shell\ Profile.command
$ sh -l
$ echo $PATH
/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
$ cd /Library/Frameworks/Python.framework/Versions/2.7/bin
$ ls -l
total 288
-rwxrwxr-x  1 root  admin    150 Jul  3  2010 2to3*
lrwxr-x---  1 root  admin      7 Nov  8 23:14 idle@ -> idle2.7
-rwxrwxr-x  1 root  admin    138 Jul  3  2010 idle2.7*
lrwxr-x---  1 root  admin      8 Nov  8 23:14 pydoc@ -> pydoc2.7
-rwxrwxr-x  1 root  admin    123 Jul  3  2010 pydoc2.7*
lrwxr-x---  1 root  admin      9 Nov  8 23:14 python@ -> python2.7
lrwxr-x---  1 root  admin     16 Nov  8 23:14 python-config@ -> python2.7-config
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 python2.7*
-rwxrwxr-x  1 root  admin   1663 Jul  3  2010 python2.7-config*
lrwxr-x---  1 root  admin     10 Nov  8 23:14 pythonw@ -> pythonw2.7
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 pythonw2.7*
lrwxr-x---  1 root  admin     11 Nov  8 23:14 smtpd.py@ -> smtpd2.7.py
-rwxrwxr-x  1 root  admin  18272 Jul  3  2010 smtpd2.7.py*
Ned Deily
fuente
Con respecto a "actualmente reservado para las versiones de Python 2", ¿tiene un enlace para eso?
Comodín
Si tengo python 3.4 y python 3.7, cuando escribo python3 desde la terminal, ejecuta python 3.4 y no 3.7, ¿cómo solucionarlo?
Ysh
31

Pregunta antigua, pero alternativamente:

virtualenv --python=python3.5 .venv
source .venv/bin/activate
FreshPow
fuente
seguro, pero si no tiene el ejecutable (por ejemplo, python3.5), esta solución no funciona.
Afshin Mehrabani
Creo que esto cubre stackoverflow.com/questions/5506110/…
FreshPow
19

¡Haz lo correcto, haz lo correcto!

---> Zero Abra su terminal,

--Primera entrada python -V, es probable que muestre:

Python 2.7.10

-En segundo lugar python3 -V, probablemente muestre:

Python 3.7.2

- En tercer lugar, ingrese where pythono which pythonprobablemente muestre:

/usr/bin/python

--- En cuarto lugar ingrese where python3o which python3, probablemente muestre:

/usr/local/bin/python3

- En quinto lugar, agregue la siguiente línea en la parte inferior de su archivo de variable de entorno PATH en ~/.profile file or ~/.bash_profileBash o ~/.zshrcen zsh.

alias python='/usr/local/bin/python3'

O

alias python=python3

-Sexto ingreso source ~/.bash_profilebajo Bash o source ~/.zshrcbajo zsh.

- En séptimo lugar, sal de la terminal.

--- Octavo Abra su terminal e ingrese python -V, Es probable que muestre:

Python 3.7.2

Lo había intentado con éxito.

Otros, el ~/.bash_profilebajo zsh no es eso ~/.bash_profile.

La variable de entorno PATH en zsh en su lugar ~/.profile(o ~/.bash_file) vía ~/.zshrc.

¡Ayudenos chicos!

McAllister Bowman
fuente
16

Cambie el Python "predeterminado" poniéndolo por delante del Python del sistema en su ruta, por ejemplo:

export PATH=/usr/local/bin:$PATH
Adam Vandenberg
fuente
Mi suposición es que al hacer esto podrías romper algo en Mac. Dado que hay muchos programas y scripts que utilizan el alias "python". Si de repente, debido al cambio de prioridad en PATH, comienzan a apuntar hacia Python3 y no hacia Python2, eso podría romper algo. Potencialmente todo el sistema operativo ... esa es mi suposición sin embargo y no probado.
Aivoric
3
Cualquier software del sistema utilizaría la ruta completa al Python proporcionado por el sistema.
Adam Vandenberg
2

Según una búsqueda rápida en Google, esta actualización solo se aplica al shell actual que tiene abierto. Probablemente se pueda solucionar escribiendo python3, ya que mac y linux son lo suficientemente similares como para que coincidan cosas como esta. Enlace al resultado de la búsqueda de Google.

Además, como dijo ninjagecko, la mayoría de los programas aún no se han actualizado a 3.x, por lo que tener el Python predeterminado como 3.x rompería muchos scripts de Python utilizados en las aplicaciones.

Matt Habel
fuente
2

Estoy usando OS X 10.7.5 y Python 3.4.2. Si escribe python3y lo que desea ejecutar, lo ejecutará usando Python 3. Por ejemplo pyhton3 test001.py. Eso ejecutó un programa de prueba que hice llamado test001. Espero que esto ayude.

ITGM
fuente
5
¡Bienvenido a Stack Overflow! Parece que su respuesta no es una respuesta real a la pregunta tal como se hizo. Consulte stackoverflow.com/help/how-to-answer para obtener ayuda si desea solucionarlo.
Otros
Pasé HORAS tratando de hacer que python3 funcionara en mi Mac; resultó que escribir 'python3' en lugar de la antigua 'python' funcionó.
YCode
1

Navegar a:

Mi PC -> Propiedades -> Avanzado -> Variables de entorno -> Variables del sistema

Suponga que ya ha agregado Python 2.7 en la variable de ruta y desea cambiar la ruta predeterminada a Python 3.x

luego agregue la ruta de la carpeta python3.5.x antes de la ruta python2.7.

cmd abierto: escriba "python --version"

La versión de Python se cambiará a Python 3.5.x

Ankit Agrawal
fuente
3
Eso es Windows.
charles ross
Algunos IDE que incluyen terminales / cmds / consolas, propagan las variables de entorno. Reinicie el IDE para obtener los cambios dentro de la terminal embedd.
UselesssCat
0
sudo mv /usr/bin/python /usr/bin/python2
sudo ln -s $(which python3) /usr/bin/python

Esto romperá los scripts, pero es exactamente la forma de cambiar Python. También debe reescribir los scripts para no asumir que pythones 2.x. Esto funcionará independientemente del lugar al que llame systemo exec.

duane
fuente
0

En resumen: ¡cambie la ruta en Variables de entorno!

Para ventanas:

  • Avanzado System Settings > Advance (tab). En la parte inferior encontrarás'Environment Variables'

  • Haga doble clic en el Path. Verá la ruta a una de las instalaciones de Python, cámbiela por la ruta de su versión deseada.

amalik2205
fuente
0

Verifique la ruta de ejecución de python3 donde tiene bibliotecas

$ which python3
/usr/local/bin/python3  some OS might have /usr/bin/python3

abra el archivo bash_profile y agregue un alias

vi ~/.bash_profile  
alias python='/usr/local/bin/python3' or alias python='/usr/bin/python3'

Vuelva a cargar bash_profile para que se apliquen las modificaciones

source ~/.bash_profile

Ejecute el comando python y verifique si se está cargando con python3

$ python --version
Python 3.6.5
Shakeel Javeed
fuente