Question Impossible d'exécuter le fichier python à partir du terminal


Je ne suis pas en mesure d'exécuter ce fichier Python à partir du terminal.

J'ai ajouté le shebang:

#!/usr/bin/env python

au début du fichier.

enter image description here

Est-ce que je fais quelque chose de mal? Comment puis-je exécuter ce fichier à partir du terminal?

MODIFIER: https://imgur.com/YYBpILr J'imagine que cela pourrait être utile.


3
2018-04-23 13:07


origine


est-ce exécutable? - nux
ne devrait pas être le shebang /usr/bin/python, et pas /usr/bin/env python? - udiboy1209
aussi, pouvez-vous simplement courir python aaa.py ou déjà simplement python? - don.joey
Par souci d’argument, que se passe-t-il si vous exécutez explicitement python aaa.py? - Oli♦
Regardez votre dernière capture d'écran: vous avez un caractère invisible ^M après le python dans la ligne de shebang. C'est probablement le reste d'avoir édité le fichier sur une machine non-Unix (généralement Windows). Supprimez ce caractère et cela fonctionnera --- si vous aviez coupé et collé cette erreur dans la question, sans captures d'écran, vous avez eu la réponse instantanément ... - Rmano


Réponses:


La capture d'écran ci-dessous montre le problème: vous avez un caractère invisible ^M après le python dans la ligne de shebang. C'est probablement un vestige d'avoir édité le fichier sur une machine non-Unix (généralement, Windows); donc l'interprète recherché est python^M qui n'est pas trouvé.

Si vous n'avez pas édité ce fichier sur un ordinateur étranger, peut-être que le paramètre de fin de ligne de votre éditeur pose problème. Quoi qu’il en soit, réécrire la ligne de shebang dans un éditeur sain devrait corriger la situation.

enter image description here


6
2018-04-23 14:13



J'ai fait face à ce problème plus tôt. ^M était visible uniquement dans les éditeurs de terminaux comme nano et pas dans les éditeurs graphiques comme gedit ou sublime text. J'ai dû modifier le fichier en nano pour supprimer tous les ^M caractères du fichier. Cela a bien fonctionné par la suite. - Aditya
@Aditya: pas besoin de le faire manuellement. Par exemple, Sublime vous permet de voir et de modifier les fins de ligne en 2 clics, il vous suffit de définir "show_line_endings": true dans les préférences. - LeartS
@LeartS: Oui. Il est réglé sur false par défaut. Mais bon de savoir si je le retrouve à l'avenir :) - Aditya


Votre dossier a Les fins de ligne Windows, quels coques unix n'aime pas.

Il suffit de les convertir en fin de fichier Unix en utilisant dos2unix aaa.py (vous devrez peut-être installer dos2unix, qui est un logiciel très léger [200kB] mais utile) et ça devrait aller.


Différentes représentations des fins de ligne sont une source commune de problèmes "étranges". Vous pouvez vérifier les fins de ligne avec file <yourfile> si ça dit quelque chose comme:

<yourfile>: ASCII text,with CRLF line terminators

Cela signifie qu'il a des fins de ligne Windows et vous devriez les convertir en unix, en utilisant dos2unix, la commande vim :set ff=unix ou votre éditeur de texte préféré s'il possède la fonctionnalité (beaucoup le font).


4
2018-04-23 14:25



i.imgur.com/hFkElwK.png Je pense que je me suis débarrassé du problème de fin de ligne. mais il me donne toujours la même sortie. :Aucun fichier ou répertoire de ce nom. Le fichier aaa.py donne une sortie aaa.py, un script Python, un fichier exécutable ASCII. - Potato_head
Il ne vous donne pas le même résultat: avant il était : no such file or directory c'est maintenant usr/bin/python: bad interpreter: No such file or directory   Avez-vous changé le shebang entre-temps, peut-être de #!/usr/bin/env pythonà #!usr/bin/python? Si vous l'avez fait, c'est maintenant le problème. Revenez à l'original. - LeartS
Oui, j'ai utilisé #! Usr / bin / python au lieu de #! Usr / bin / env python. Inverser ça n'a pas aidé. - Potato_head
Ils ont tous deux tort, une barre oblique principale est manquante. Une barre oblique indique un URI absolu, sans qu’il soit relatif au répertoire en cours et que vous n’ayez pas de usr/bin/python (ni env) dans le répertoire en cours. Le bon shebang est: #!/usr/bin/env python. - LeartS
Oui, tu as raison. J'ai tout gaché. Merci. - Potato_head