Saltar al contenido

Predeterminado a python3 para ‘/usr/bin/env python’

Hacemos una verificación exhaustiva cada artículo en nuestro espacio con el objetivo de enseñarte siempre la información certera y actual.

Solución:

Eso es porque env esta buscando python en tus PATH, no en ningún shell incorporado, alias o función. como has definido python como python3 como un alias, env no lo encontrará, lo buscará PATH y resolverá python a /usr/bin/python (cual es python2).

Puede comprobar todas las ubicaciones disponibles del ejecutable pythonen bashhacer:

type -a python

No tiene suerte si quiere usar un alias en shebang porque, por definición, shebang debe ser una ruta completa al ejecutable del intérprete, que es el env debería resolver python a cuando usas /usr/bin/env python. Para interpretar el script usando python3 usa el tinglado:

#!/usr/bin/env python3

Dada la cantidad de secuencias de comandos que llaman a /usr/bin/env python esperando a python 2, probablemente sea una mala idea tener python en realidad python 3.

Como dijo Benny en un comentario, /usr/bin/env python3 es la solución correcta.

Encontré una mejor solución que las publicadas aquí: http://redsymbol.net/articles/env-and-python-scripts-version/

La idea básica es poner un nombre de enlace simbólico python a python3 en algún otro directorio con un nombre inteligente y luego poner ese directorio al comienzo de $PATH para que se encuentre antes que el que está en /usr/bin.

Asi que:

mkdir ~/bin/env_python3/
ln -s /usr/bin/python3 ~/bin/env_python3/python
$PATH = ~/bin/env_python3/:$PATH ./script.py

Al usar esta solución, no vincula /usr/bin/python a python3 y rompe los scripts que asumen que es python 2 y tampoco tiene que editar el script que descargó de otra persona.

Sección de Reseñas y Valoraciones

Si estás contento con lo expuesto, tienes la opción de dejar una noticia acerca de qué te ha impresionado de este post.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *