web-dev-qa-db-fra.com

Aucun fichier ou répertoire de ce type, mais je peux le voir!

J'essaie d'exécuter un python Script, sur un PI de framboise sans tête à l'aide de WINSCP et obtenez 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.

Quand j'essaie de courir du terminal, je reçois:

: No such file or directory.

J'essaie un exemple similaire python script, dans le même répertoire, avec le même python Shebang, les mêmes autorisations et utiliser le même utilisateur PI, et cela fonctionne.

Je fais aussi un ls et je peux voir le fichier, donc je ne sais pas pourquoi il ne sera pas exécuté.

11
reggie

De askubuntu , répondez par Gilles :

Si vous voyez l'erreur ": aucun fichier ou répertoire de ce type" (sans rien avant le côlon), cela signifie que votre ligne Shebang a un retour de chariot à la fin, probablement parce qu'il a été édité sous Windows (qui utilise CR, LF en tant que séparateur de ligne). Le caractère CR provoque le recul du curseur au début de la ligne après que la coque imprime le début du message et vous ne pouvez donc que vous obtenez uniquement la pièce après CR, qui termine la chaîne d'interpréteur qui fait partie du message d'erreur.

Supprimer le CR: la ligne Shebang doit avoir une ligne UNIX (Lignefeed uniquement). Python lui-même permet des fins de la ligne CRLF, de sorte que les caractères CR sur d'autres lignes ne font pas mal. Les scripts shell d'autre part doivent être exempts de caractères CR.

Pour supprimer les extrémités de la 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 les scripts sous Windows, utilisez un éditeur qui aboutit avec des terminaisons de ligne UNIX (c'est-à-dire quelque chose de moins cérébral-mort que le Bloc-notes) et assurez-vous qu'il est configuré pour écrire des terminaisons de ligne UNIX (c.-à-d. LF uniquement) lorsque Modification d'un fichier UNIX.

28
Arkadiusz Drabczyk