El python
comando del programa ejecuta Python 2. Python 3 puede ejecutarse usando el python3
comando. ¿Cómo se puede ejecutar Python 3 con el python
comando?
Una forma segura y sencilla sería utilizar un alias. Coloque esto en ~/.bashrc
o ~/.bash_aliases
archivo:
alias python=python3
Después de agregar lo anterior en el archivo, ejecute source ~/.bashrc
o source ~/.bash_aliases
.
Por ejemplo:
$ python --version
Python 2.7.6
$ python3 --version
Python 3.4.3
$ alias python=python3
$ python --version
Python 3.4.3
Para eludir el alias, use el command
comando incorporado:
$ command python --version
Python 2.7.6
Otra forma de eludir el alias es usarlo \
antes del comando.
$ \python --version
Python 2.7.6
Para deshabilitar el alias en el shell actual, use el unalias
comando incorporado:
$ unalias python
$ python --version
Python 2.7.6
[Junio de 2016] El lugar recomendado para obtener información sobre la transición es la página oficial de Ubuntu Python .
Desde el wiki de Ubuntu :
Tanto para Ubuntu como para Debian, tenemos objetivos de proyecto en curso para hacer de Python 3 la versión de Python predeterminada y preferida en las distribuciones.
Lo que esto no significa:
/usr/bin/python
señalará a Python 3. No, esto no va a suceder (a menos que PEP 394 defienda lo contrario, lo cual es dudoso en el futuro previsible)./usr/bin/python
y/usr/bin/python2
apuntará a Python 2.7 y/usr/bin/python3
apuntará a la última versión compatible de Python 3.Python 2 se eliminará del archivo. No, esto no va a suceder . Esperamos que Python 2.7 siga siendo compatible y esté disponible en Ubuntu durante bastante tiempo, dado que PEP 373 promete soporte de mantenimiento de corrección de errores hasta 2020.
No se recomienda cambiar el enlace simbólico debido a otras dependencias del paquete, pero "tienen objetivos de proyecto en curso para hacer de Python 3 la versión de Python predeterminada y preferida en las distribuciones".
Para el uso de la CLI, como @Radu Rădeanu , yo recomendaría poner un alias en el usuario ~/.bashrc
, .bash_aliases
archivo (los archivos diferentes, entre ellos ~/.bash_profile
, están cargados al menos una vez, son en su mayoría con fines de organización, pero puede variar según la plataforma). Los entornos virtuales de Python también funcionan bien.
Ejemplos de alias:
alias python=python3
o
alias python='/usr/bin/python3'
Las secuencias de comandos aún deben usar algo como #!/usr/bin/env python3
compatibilidad cruzada.
Usar env
es bueno para uso mixto con entornos virtuales.
Nota (gracias a @wjandrea): los alias son parte del tiempo de ejecución de bash, no del entorno del usuario. Por lo tanto, no están disponibles para shebang ( #!
). Si prefiere el alias python = python3, algunos program.py
sin shebang podrían ejecutarse invocando al intérprete con alias de esta manera python program.py
. El alias también puede ser útil para sistemas con múltiples versiones de python3 como 3.4 y 3.6 juntas.
python
, no es realmente relevante hasta que se complete la conversión. Incluso entonces, puede convertirse en un problema.
python3
en un shebang, no python
.
Puedes probar la herramienta de línea de comando update-alternatives
.
$ sudo update-alternatives --config python
Si obtiene el error "no hay alternativas para python", configure una alternativa usted mismo con el siguiente comando:
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
Cambie la ruta /usr/bin/python3
a la versión de Python deseada en consecuencia.
update-alternatives
no es adecuado para Python? ¿Es por legacy.python.org/dev/peps/pep-0394 ?
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2
Ubuntu, y el resto de las distribuciones de Linux para el caso, todavía dependen en gran medida de Python 2.7 para una serie de aplicaciones y comandos. Si cambia la referencia predeterminada de "python" a Python 3.x, varias funciones de Python comenzarán a arrojar errores de aserción.
Por ejemplo, en Ubuntu, 'pip' para uno ya no se ejecutará correctamente a menos que edite directamente el archivo y cambie el shebang para hacer referencia a '#! / Usr / bin / env python2.7'. En los sabores RHEL (Red Hat Enterprise Linux) como Red Hat, Fedora y CentOS, el comando 'Yum' también depende de Python 2.7.
Mi punto aquí es que causaría que una cantidad significativa de código comience a arrojar errores de aserción solo para que pueda escribir 'python' en el terminal para hacer referencia a Python 3.x.
Es mucho mejor usar el comando 'python3' en la terminal y el shebang '#! / Usr / bin / env python3' en sus archivos de Python 3.x.
Puede enlazar simbólicamente /usr/bin/python
a python3
la
sudo ln -s /usr/bin/python3 /usr/bin/python
y puede evitar que Python 2 y pip2 se instalen como una dependencia con
sudo apt-mark hold python python-pip
Consulte las otras respuestas para saber por qué es posible que no desee hacer esto. Ubuntu 18.04+ ya no viene con Python 2, por lo que no debería ser tan malo.
python
se supone que un ejecutable llamado es Python 2, por lo que esto podría romper algunas cosas.
python
->/usr/bin/python
cat > /usr/local/bin/py
#!/bin/dash
python3 "$@"
<CTRL-D>
(siempre que tenga permiso de escritura para / usr / local / bin) de la misma manera
cat > /usr/local/bin/pyi
#!/bin/dash
python3 -i "$@"
<CTRL-D>
entonces solo escribe py (y usa py en #! líneas) para su python elegido.
sudo ln -s /usr/bin/python3 /usr/local/bin/py
Me resulta muy útil simplemente eliminar / usr / bin / python y / usr / bin / pip. Esto obliga a todos los programas a confiar en los comandos "python2" y "python3".
Aunque algunos paquetes opcionales y obsoletos dependen del #!/usr/bin/python
trabajo, prefiero enviar parches a esos programas que seguir cometiendo errores extraños y, a veces, difíciles de depurar.
Puede usar update-alternatives
para proporcionar diferentes versiones de programas que pueden ser necesarios en diferentes momentos debido a problemas de compatibilidad.
Esta respuesta es un buen ejemplo de cómo configurar las cosas para mantener simultáneamente diferentes versiones de gcc / g ++, por ejemplo.
haz lo mismo con python2.7 y python 3.3
python
debe mantenerse como significadopython2
. Quise decir mi comentario como una forma de tener una versión de Python específica de la aplicación en lugar de tratar de evitar el Python del sistema.