Saltar al contenido

usando #! / usr / bin / env python3 shebang con Windows

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 .pyes como si mirara hacia arriba .exes (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.

¡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 *