¿Debería poner #! (shebang) en scripts de Python, y ¿qué forma debería adoptar?
¿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.
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 python
de 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 python
pueden referirse a python2
o python3
sobre 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"
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 python
que debe invocarse manualmente.
El resultado final de ejecutar el programa no se ve afectado de ninguna manera; son sólo opciones de los medios.