Solución:
La respuesta aceptada por @AKX es incorrecta para el estándar Python 3 de Windows 10, ciertamente en el último Windows 10 (1903) si no antes.
(Nota: no puedo hablar de cómo esto puede o no funcionar bajo WSL).
Tengo varias versiones de Python instaladas (2.7, 3.6, 3.7 y, más recientemente, Python 3.8b1). He estado usando el #!/usr/bin/env
shebang durante años en mis scripts para la compatibilidad multiplataforma (generalmente para distinguir los scripts Py2 vs Py3).
He creado un pequeño script en una carpeta (C:so_testawtest.py
):
#!/usr/bin/env python3.6
import sys
print(sys.version)
Si ejecuto esto con awtest.py
o solo awtest
yo obtengo 3.6.x
informó (mostrando que se está ejecutando con Python 3.6). Si cambio el shebang para referirme a 3.7, obtengo 3.7.x
informó. Si cambio el tinglado a solo #!/usr/bin/env python3
Tengo instalada la última versión de Python (3.8).
Ahora, si agrego esa carpeta a mi ruta (path=%PATH%;C:so_test
en la ventana de comandos en la que está probando, o en las variables env principales (aunque necesitará reiniciar la ventana de comandos si hace lo último)), puedo cambiar a un directorio diferente y ejecutar awtest
o awtest.py
y todavía funcionan y se refieren a la carpeta en la ruta. Si elimino la carpeta de secuencias de comandos de la ruta, estos archivos ya no se encuentran.
Si bien no esperaría necesariamente que esto funcione en Windows antes de 10 o Python 2.7, esta funcionalidad parece ser la forma en que las cosas seguirán adelante.
No, Windows no admite líneas shebang.
La documentación que ha vinculado se relaciona con la py
lanzador instalado por Python, que puede interpretar varias líneas shebang para elegir una versión de Python para ejecutar un script.
setuptools
es capaz de generar wrapper .exes para sus scripts de Python, pero se complica un poco y ya asume que tiene un paquete con un setup.py
etcétera.
Localmente, si realmente De Verdad necesita esto, probablemente podría agregar .py
al PATHEXT
variable de entorno, por lo que la línea de comandos de Windows busca .py
es como si mirara hacia arriba .exe
s (y varios otros; el valor predeterminado moderno actual es .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
). Sin embargo, esto, naturalmente, no se escalará para la distribución de aplicaciones, ya que todos sus usuarios también necesitarían configurarlo.
Mi recomendación es seguir con ese viejo aburrido python testing.py
, De Verdad.