Ejecute scripts de Python sin invocar explícitamente `python`

40

Estoy usando Debian Linux.

Me preguntaba si había una manera de configurar para ejecutar todos los scripts de Python en la terminal escribiendo script.py(en lugar de python script.py).

usuario2018084
fuente

Respuestas:

58

Hay dos cosas que debes hacer:

  • Asegúrese de que el archivo sea ejecutable: chmod +x script.py
  • Use un shebang para que el núcleo sepa qué intérprete usar. La línea superior del script debería leer:

    #!/usr/bin/python
    

    Esto supone que su script se ejecutará con el python predeterminado. Si necesita una versión específica, solo especifique en el shebang:

    #!/usr/bin/python2.7
    

Ahora puedes escribir:

    ./script.py

si el script está en su directorio actual, o:

    script.py

si la ubicación del script está en su RUTA, o:

    path/to/script.py

de otra manera.

Paul
fuente
32
En general, es una mejor idea usar #!/usr/bin/env python, en caso de que el usuario tenga una compilación local de python (por ejemplo, en /usr/local/bin) con la que preferiría ejecutar el script.
sapi
3
@sapi No, según Debian, no lo es, al menos en sus políticas de desarrollo. Si está escribiendo sus propios scripts, puede aceptar el riesgo, por supuesto, es mejor ser explícito. Si quieres el local, elígelo en el shebang.
Paul
3
No es bashque lea el archivo cuando se ejecuta ...
unperson325680
@progo Esto es cierto: tenga en cuenta que si ve una respuesta que cree que se beneficiaría de la mejora, continúe y edítela, las mejoras siempre son bienvenidas
Paul
Y tendrás que hacerlo ./script.py, noscript.py
Paul Draper el
33

En Linux, simplemente puede usar el hashbang (también conocido como shebang). Agrega la línea

#!/usr/bin/python

si desea ejecutar el intérprete de python predeterminado.

#!/path/to/python[x.x]

usar alguna versión específica, o

#!/usr/bin/env python

Si desea que el entorno encuentre Python para usted.

También se le pedirá que ejecute el script.

chmod +x script[.py] 
Gaurav Joseph
fuente
2

Utilizar:

#!/usr/bin/env python

Esto asegurará que la python que el usuario espera usar sea la que ejecute el script. Esto es especialmente importante si el usuario está usando virtualenv para tener una versión específica de python en un entorno dado.

Cory Klein
fuente
0

Use una línea shebang en la parte superior de su script como se muestra a continuación:

! / usr / bin / python

Actualice la versión adecuada de Python en la que desea ejecutar el script. Por ejemplo, para Python 3.6 es

! /usr/bin/python3.6

para intérprete predeterminado

! / usr / bin / python

Nota: Asegúrese de que el script tenga permiso ejecutable.

Suraj Bora
fuente