web-dev-qa-db-fra.com

exécuter un script python dans un terminal sans la commande python

J'ai un script python appelons-le script1.py. Je peux l'exécuter dans le terminal de cette façon:

python /path/script1.py
...

mais je veux exécuter comme un programme en ligne de commande:

arbitraryname
...

comment puis-je le faire ?

45
Alpagut

Vous utilisez un ligne Shebang au début de votre script:

#!/usr/bin/env python

rendre le fichier exécutable:

chmod +x arbitraryname

et le mettre dans un répertoire sur votre PATH (peut être un lien symbolique):

cd ~/bin/
ln -s ~/some/path/to/myscript/arbitraryname
78
Martijn Pieters

Il y a trois parties:

  1. Ajoutez un "Shebang" en haut de votre script qui indique comment exécuter votre script.
  2. Donnez au script les autorisations d'exécution.
  3. Créez le script dans votre PATH afin de pouvoir l'exécuter de n'importe où.

Ajout d'un shebang

Vous devez ajouter un Shebang en haut de votre script afin que le shell sache quel interpréteur utiliser lors de l'analyse de votre script. C'est généralement:

#!path/to/interpretter

Pour trouver le chemin de votre interpréteur python sur votre machine, vous pouvez exécuter la commande suivante:

which python

Cela cherchera dans votre PATH pour trouver l’emplacement de votre exécutable python. Il devrait revenir avec un chemin absolu que vous pourrez ensuite utiliser pour former votre Shebang. Assurez-vous que votre Shebang est en haut de votre script python:

#!/usr/bin/python

Autorisations d'exécution

Vous devez marquer votre script avec des autorisations d'exécution afin que votre shell sache que vous souhaitez l'exécuter lorsque vous essayez de l'utiliser en tant que commande. Pour ce faire, vous pouvez exécuter cette commande:

chmod +x myscript.py

Ajouter le script à votre chemin

La variable d'environnement PATH est une liste ordonnée de répertoires que votre shell cherchera lors de la recherche d'une commande que vous essayez d'exécuter. Donc, si vous voulez que votre script python soit une commande que vous pouvez exécuter de n'importe où, il doit être dans votre PATH. Vous pouvez voir le contenu de votre chemin exécutant la commande:

echo $PATH

Ceci imprimera une longue ligne de texte, où chaque répertoire est séparé par un point-virgule. Chaque fois que vous vous demandez où se trouve l'emplacement réel d'un exécutable que vous exécutez à partir de votre chemin, vous pouvez le trouver en exécutant la commande suivante:

which <commandname>

Vous avez maintenant deux options: Ajouter votre script à un répertoire déjà présent dans votre PATH ou ajouter un nouveau répertoire à votre PATH. Je crée généralement un répertoire dans mon répertoire personnel, puis je l’ajoute PATH. Pour ajouter des éléments à votre chemin, vous pouvez exécuter la commande:

export PATH=/my/directory/with/pythonscript:$PATH

Vous devriez maintenant pouvoir exécuter votre script python comme commande n'importe où. MAIS! Si vous fermez la fenêtre du shell et ouvrez-en une nouvelle, le nouveau ne se souviendra plus du changement que vous venez de faire. Si vous souhaitez que cette modification soit enregistrée, vous devez ajouter cette commande au bas de votre fichier .bashrc ou .bash_profile.

49
arajek

Ajouter la ligne suivante au début script1.py

#!/usr/bin/env python

puis rendre le script exécutable:

$ chmod +x script1.py

Si le script réside dans un répertoire qui apparaît dans votre variable PATH, vous pouvez simplement taper

$ script1.py

Sinon, vous devrez fournir le chemin complet (absolu ou relatif). Ceci inclut le répertoire de travail actuel, qui devrait ne pas être dans votre PATH.

$ ./script1.py
11
chepner

Vous devez utiliser un hashbang . Ajoutez-le à la première ligne de votre script python.

#! <full path of python interpreter>

Puis modifiez les autorisations du fichier et ajoutez l'autorisation d'exécution.

chmod +x <filename>

Et enfin l'exécuter en utilisant

./<filename>

Si c'est dans le répertoire courant,

2
asheeshr