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.

reggie
la source
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.

Arkadiusz Drabczyk
la source
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