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

3

Je ne suis pas capable d'exécuter ce fichier Python à partir d'un terminal.

J'ai ajouté le shebang:

#!/usr/bin/env python

au début du fichier.

entrez la description de l'image ici

Est-ce que je fais quelque chose de mal? Comment puis-je exécuter ce fichier depuis un terminal?

EDIT: https://imgur.com/YYBpILr Je suppose que cela pourrait être utile.

Pomme de terre
la source
est-ce exécutable?
Nux
le shebang ne devrait-il pas être /usr/bin/python, et non /usr/bin/env python?
udiboy1209
aussi, pouvez-vous simplement courir python aaa.pyou déjà simplement python?
don.joey
1
Par souci d'argument, qu'arrivera-t-il si vous exécutez explicitement python aaa.py?
Oli
2
Regardez votre dernière capture d'écran: vous avez un caractère invisible ^Maprès la ligne pythondans le shebang. C’est probablement le fait d’avoir édité le fichier sur un ordinateur non-Unix (généralement Windows). Supprimez ce personnage et cela fonctionnera --- si vous aviez coupé et collé cette erreur dans la question, sans capture d'écran, vous avez eu la réponse instantanément ...
Rmano

Réponses:

6

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

Si vous n'avez pas modifié ce fichier sur un système d'exploitation extraterrestre, le problème de fin de ligne dans votre éditeur est peut-être un problème. Quoi qu'il en soit, réécrire la ligne shebang dans un éditeur sain d'esprit devrait corriger le problème.

entrez la description de l'image ici

Rmano
la source
J'ai fait face à ce problème plus tôt. ^Métait visible uniquement dans les éditeurs de terminaux tels que nanoet non dans les éditeurs graphiques tels que gedit ou sublime text. Il a fallu éditer le fichier en nano pour supprimer tous les ^Mcaractères du fichier. Cela a bien fonctionné par la suite.
Aditya
1
@Aditya: inutile de le faire manuellement. Sublime, par exemple, vous permet de voir et de modifier les fins de ligne en 2 clics; il vous suffit de définir vos "show_line_endings": truepréférences.
Apprentissage
@LeartS: Oui. Il est réglé sur falsepar défaut. Mais bon à savoir si je le reverrai à l'avenir :)
Aditya
4

Votre fichier a des fins de ligne Windows , ce que les shells unix n'aiment pas .

Convertissez-les simplement en fins de fichier Unix en utilisant dos2unix aaa.py(vous aurez peut-être besoin d'installer dos2unix, qui est un logiciel très léger [200 Ko] mais utile) et tout devrait bien se passer.


Les 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 elle indique quelque chose comme:

<yourfile>: ASCII text,with CRLF line terminators

Cela signifie qu'il a des fins de ligne Windows et que vous devriez les convertir en unix à l' aide de dos2unixla commande vim :set ff=unixou de votre éditeur de texte préféré, le cas échéant.

Apprentissage
la source
i.imgur.com/hFkElwK.png Je pense que je me suis débarrassé du problème de fin de ligne. mais sa me donne toujours la même sortie. :Aucun fichier ou répertoire de ce nom. Le fichier aaa.py donne la sortie aaa.py, script Python, exécutable texte ASCII.
Potato_head
Cela ne vous donne pas le même résultat: avant, c'était : no such file or directorymaintenant. 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. Retournez à l'original.
Apprentissage
Oui, j'ai utilisé #! Usr / bin / python au lieu de #! Usr / bin / env python. Revenir en arrière n'a pas aidé.
Potato_head
2
Ils ont tous les deux tort, il manque une barre oblique. Une barre oblique indique un uri absolu, sans qu'il soit relatif au répertoire actuel et que vous n'avez pas usr/bin/python(ni env) dans le répertoire actuel. La tralala correcte est: #!/usr/bin/env python.
Apprentissage