¿Por qué es ‘#! / Usr / bin / env python’ supuestamente más correcto que solo ‘#! / Usr / bin / python’?

Alguien sabe esto? Nunca he podido encontrar una respuesta.

Si eres propenso a instalar Python en varios lugares interesantes en tu PATH (como en $PATH en los shells típicos de Unix, %PATH en los típicos de Windows), usar /usr/bin/env acomodará tu capricho (bueno, en Unix (al menos, los entornos similares) mientras va directamente a /usr/bin/python no. Pero perder el control de la versión de Python con la que se ejecutan tus scripts no es una ganga implacable … si miras mi código es más probable que comiences a verlo, por ejemplo, #!/usr/local/bin/python2.5 en lugar de un #!/usr/bin/env python abierto y aceptado – asumiendo que el script es importante, me gusta asegurarme de que se ejecute con la versión específica con la que lo he probado y desarrollado, NO uno semi-aleatorio 😉 .

De wikipedia

Los shebangs especifican rutas absolutas a los ejecutables del sistema; Esto puede causar problemas en los sistemas que tienen diseños de sistema de archivos no estándar.

A menudo, el progtwig / usr / bin / env puede usarse para eludir esta limitación

encuentra el ejecutable de Python en tu entorno y lo utiliza. es más portátil porque python no siempre está en / usr / bin / python. env siempre se encuentra en / usr / bin.

Encuentra ‘python’ también en / usr / local / bin, ~ / bin, / opt / bin, … o donde sea que se pueda esconder.

Puede encontrar esta publicación de interés: http://mail.python.org/pipermail/python-list/2008-May/661514.html

Esta puede ser una mejor explicación: http://mail.python.org/pipermail/tutor/2007-June/054816.html