¿Debería poner #! (shebang) en scripts de Python, y ¿qué forma debería adoptar?

Resuelto treecoder asked hace 13 años • 15 respuestas

¿Debería poner el shebang en mis scripts de Python? ¿En qué forma?

#!/usr/bin/env python 

o

#!/usr/local/bin/python

¿Son estos igualmente portátiles? ¿Qué forma se utiliza más?

Nota: el proyecto tornado utiliza el shebang. Por otro lado, el proyecto Django no.

treecoder avatar Aug 02 '11 13:08 treecoder
Aceptado

La línea shebang en cualquier secuencia de comandos determina la capacidad de la secuencia de comandos para ejecutarse como un ejecutable independiente sin escribir pythonde antemano en la terminal o al hacer doble clic en un administrador de archivos (cuando está configurado correctamente). No es necesario, pero generalmente se coloca allí para que cuando alguien vea el archivo abierto en un editor, sepa inmediatamente lo que está viendo. Sin embargo, la línea de shebang que utilices es importante.

El uso correcto para los scripts de Python 3 (por defecto, la versión 3.más reciente) es:

#!/usr/bin/env python3

El uso correcto para los scripts de Python 2 (por defecto, la versión 2.latest) es:

#!/usr/bin/env python2

No se debe utilizar lo siguiente (excepto en el raro caso de que esté escribiendo código que sea compatible con Python 2.x y 3.x):

#!/usr/bin/env python

El motivo de estas recomendaciones, dadas en PEP 394 , es que pythonpueden referirse a python2o python3sobre sistemas diferentes.

Además, no utilice:

#!/usr/local/bin/python

"Python puede instalarse en /usr/bin/python o /bin/python; en esos casos, el #! anterior fallará".

― "#!/usr/bin/env python" frente a "#!/usr/local/bin/python"

GlassGhost avatar Oct 10 '2013 19:10 GlassGhost

Realmente es sólo una cuestión de gustos. Agregar el shebang significa que las personas pueden invocar el script directamente si lo desean (suponiendo que esté marcado como ejecutable); omitirlo solo significa pythonque debe invocarse manualmente.

El resultado final de ejecutar el programa no se ve afectado de ninguna manera; son sólo opciones de los medios.

Amber avatar Aug 02 '2011 06:08 Amber