Exécutez des scripts Python sans invoquer explicitement `python`

40

J'utilise Debian Linux.

Je me demandais s'il y avait un moyen de configurer pour exécuter tous les scripts Python dans le terminal en tapant script.py(au lieu de python script.py).

user2018084
la source

Réponses:

58

Il y a deux choses que vous devez faire:

  • Assurez-vous que le fichier est exécutable: chmod +x script.py
  • Utilisez un shebang pour indiquer au noyau quel interpréteur utiliser. La première ligne du script doit se lire:

    #!/usr/bin/python
    

    Cela suppose que votre script s'exécutera avec le python par défaut. Si vous avez besoin d'une version spécifique, spécifiez simplement dans le shebang:

    #!/usr/bin/python2.7
    

Vous pouvez maintenant taper:

    ./script.py

si le script se trouve dans votre répertoire courant, ou:

    script.py

si l'emplacement du script se trouve dans votre CHEMIN, ou:

    path/to/script.py

autrement.

Paul
la source
32
En général, c'est une meilleure idée à utiliser #!/usr/bin/env python, dans le cas où l'utilisateur a une version locale de python (par exemple, dans /usr/local/bin) avec laquelle il préfère exécuter le script.
sapi
3
@sapi Pas selon Debian, ce n'est pas le cas, du moins dans leurs politiques de développement. Si vous écrivez vos propres scripts, vous pouvez bien sûr accepter le risque, il vaut mieux être explicite. Si vous voulez le local, choisissez-le dans le shebang.
Paul
3
Ce n'est pas bashça qui lit le fichier lors de l'exécution ...
unperson325680
@progo C'est vrai - notez que si vous voyez une réponse qui, selon vous, bénéficierait d'une amélioration, allez-y et éditez-la, les améliorations sont toujours les bienvenues
Paul
Et vous devrez faire ./script.py, passcript.py
Paul Draper
33

Sous linux, vous pouvez simplement utiliser le hashbang (aka shebang). Ajoutez la ligne

#!/usr/bin/python

si vous souhaitez exécuter l'interpréteur python par défaut.

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

d'utiliser une version spécifique, ou

#!/usr/bin/env python

Si vous voulez que l'environnement trouve python pour vous.

Vous devrez également rendre le script exécutable

chmod +x script[.py] 
Gaurav Joseph
la source
2

Utilisation:

#!/usr/bin/env python

Cela garantira que le python que l'utilisateur s'attend à utiliser sera celui qui exécutera le script. Ceci est particulièrement important si l'utilisateur utilise virtualenv pour avoir une version spécifique de python dans un environnement donné.

Cory Klein
la source
0

Utilisez une ligne de shebang en haut de votre script comme ci-dessous:

! / usr / bin / python

Mettez à jour la version python appropriée sur laquelle vous souhaitez exécuter le script. par exemple pour python 3.6 son

! /usr/bin/python3.6

pour l'interprète par défaut

! / usr / bin / python

Remarque: assurez-vous que le script dispose d'une autorisation exécutable.

Suraj Bora
la source