Pas un tel fichier ou répertoire mais je peux le voir!


11

J'essaie d'exécuter un script python, sur un Raspberry PI sans tête à l'aide de winSCP et d'obtenir le message d'erreur suivant:

Command '"./areadetect_movie_21.py"'
failed with return code 127 and error message
/usr/bin/env: python
: No such file or directory.

Lorsque j'essaie de courir depuis le terminal, j'obtiens:

: No such file or directory.

J'essaie un script python similaire, dans le même répertoire, avec le même shebang python, les mêmes autorisations et en utilisant le même utilisateur pi, et ça marche.

Je fais aussi un lset je peux voir le fichier, donc je ne sais pas pourquoi il ne fonctionnera pas.


1
Avez-vous modifié `areadetect_movie_21.py 'sous Windows? Si vous avez vu cet askubuntu.com/a/372691 .
Arkadiusz Drabczyk

oui en éclipse, pourquoi?
reggie

J'ai modifié mon commentaire après l'avoir ajouté. Voir ce askubuntu.com/a/372691 .
Arkadiusz Drabczyk

oui oui oui ça a marché, merci beaucoup! pouvez-vous convertir votre commentaire en une réponse afin que je puisse l'accepter.
reggie

ok, je l'ai fait :)
Arkadiusz Drabczyk

Réponses:


28

De AskUbuntu , réponse de Gilles :

Si vous voyez l'erreur ": aucun fichier ou répertoire" (sans rien avant les deux-points), cela signifie que votre ligne shebang a un retour chariot à la fin, probablement parce qu'il a été édité sous Windows (qui utilise CR, LF comme séparateur de ligne). Le caractère CR fait revenir le curseur au début de la ligne après que le shell imprime le début du message et donc vous ne voyez que la partie après CR qui termine la chaîne d'interpréteur qui fait partie du message d'erreur.

Supprimez le CR: la ligne shebang doit avoir une fin de ligne Unix (saut de ligne uniquement). Python lui-même autorise les fins de ligne CRLF, donc les caractères CR sur d'autres lignes ne font pas de mal. Les scripts shell d'autre part doivent être exempts de caractères CR.

Pour supprimer les fins de ligne Windows, vous pouvez utiliser dos2unix :

sudo dos2unix / usr / local / bin / casperjs

ou sed:

sudo sed -i -e 's / \ r $ //' / usr / local / bin / casperjs

Si vous devez modifier des scripts sous Windows, utilisez un éditeur qui gère les fins de ligne Unix (c'est-à-dire quelque chose de moins mortel que le Bloc-notes) et assurez-vous qu'il est configuré pour écrire les fins de ligne Unix (c'est-à-dire LF uniquement) lors de la modification d'un fichier Unix.


1
J'ai ouvert le fichier, sur le pi, via ssh dans le bloc-notes sur mon PC Windows et supprimé le retour chariot et cela fonctionne :) Merci beaucoup.
reggie
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.