Python >> Tutoriel Python >  >> Python Tag >> Linux

Exécution d'un script python à partir d'un terminal Linux

Il semble que vous ayez une ligne de shebang mal écrite. D'après l'erreur que vous obtenez :

-bash: /usr/bin/pyAES.py: /usr/bin/python2: bad interpreter: No such file or directory

Je dirais que vous devriez définir la première ligne de /usr/bin/pyAES.py à

#!/correct/path/to/python

où le /correct/path/to/python peut être trouvé à partir de la sortie de :

type -P python

Il est /usr/bin/python (pas /usr/bin/python2 ) sur mon système.


Le premier obstacle est que vous devez indiquer au shell où trouver le programme. Si vous ne mettez aucune indication de répertoire, vous ne pouvez exécuter que les fichiers exécutables situés dans le chemin de recherche des exécutables décrit par le PATH Variables d'environnement. Le répertoire courant n'est pas dans le chemin de recherche à moins que vous ne l'y mettiez. Alors lancez ./pyAES.py .

Pour exécuter un programme, vous devez disposer des autorisations d'exécution sur celui-ci :

chmod +x pyAES.py

Si vous obtenez un message du type "mauvais interprète :aucun fichier ou répertoire de ce type" ou simplement "aucun fichier ou répertoire de ce type" sur un fichier existant, cela signifie qu'il y a une erreur dans la ligne shebang du script. (Voir /bin/sh:./check-dependencies.pl:not found — but check-dependencies.pl existe! pour une explication plus détaillée.) La ligne shebang est la première ligne du script et indique l'emplacement de l'interpréteur .

Pour éviter de coder en dur le chemin d'accès à un interpréteur (par exemple, /usr/bin/python ou /usr/local/bin/python ), vous pouvez utiliser le /usr/bin/env programme comme trampoline :

#!/usr/bin/env python

La PEP 304 précise que #!/usr/bin/env python2 est le droit de se référer à Python 2.x. Cependant, il existe de nombreux systèmes existants où Python 2.x n'est fourni que sous le nom python et non python2 . Il se peut donc que vous ayez à jongler entre les deux. Si vous disposez des autorisations root et que votre distribution ne fournit que Python 2.x en tant que python ou ne fournit que python2 , créez un lien symbolique vers l'autre nom.

Si vous voyez l'erreur ":Aucun fichier ou répertoire de ce type" (sans rien avant les deux-points), cela signifie que votre ligne shebang a un retour chariot à la fin, probablement parce qu'elle a été modifiée sous Windows. Supprimez le CR :la ligne shebang doit avoir une fin de ligne Unix (saut de ligne uniquement).


L'erreur "command not found" vous obtenez parce que cet exécutable n'existe pas dans /bin/ ou /usr/bin/ tous les chemins en $PATH variables.

Lorsque vous exécutez une commande, le shell backend recherche cet exécutable/binaire dans PATH , par exemple. /bin/ /usr/bin/ etc...

Donc, si le chemin n'est pas correctement défini, vous serez confronté à ce problème.

et lorsque vous utilisez " ./command " alors il exécutera cette commande à partir du répertoire actuel, la variable PATH n'est pas utilisée pour rechercher le nom du fichier


Prochain article
No