Ich versuche, ein Python-Skript auf einem kopflosen Raspberry PI mit winSCP auszuführen und erhalte die folgende Fehlermeldung:
Command '"./areadetect_movie_21.py"'
failed with return code 127 and error message
/usr/bin/env: python
: No such file or directory.
Wenn ich versuche, vom Terminal aus zu starten, erhalte ich:
: No such file or directory.
Ich versuche ein ähnliches Python-Skript im selben Verzeichnis, mit demselben Python-Shebang, denselben Berechtigungen und mit demselben Benutzer-pi, und es funktioniert.
Ich mache auch ein ls
und ich kann die Datei sehen, also weiß ich nicht, warum sie nicht ausgeführt wird.
Akzeptierte Antwort:
Von AskUbuntu, Antwort von Gilles:
Wenn Sie den Fehler „:No such file or directory“ sehen (mit nichts vor dem Doppelpunkt), bedeutet dies, dass Ihre Shebang-Zeile am Ende einen Wagenrücklauf hat, vermutlich weil sie unter Windows bearbeitet wurde (das CR,LF als Zeilentrenner). Das CR-Zeichen bewirkt, dass der Cursor zum Anfang der Zeile zurückkehrt, nachdem die Shell den Anfang der Nachricht ausgegeben hat, und Sie sehen also nur den Teil nach CR, der den Interpreter-String beendet, der Teil der Fehlermeldung ist.
Entfernen Sie das CR:Die Shebang-Zeile muss ein Unix-Zeilenende haben (nur Zeilenvorschub). Python selbst erlaubt CRLF-Zeilenenden, sodass die CR-Zeichen in anderen Zeilen nicht schaden. Shellskripte hingegen müssen frei von CR-Zeichen sein.
Um die Windows-Zeilenenden zu entfernen, können Sie dos2unix:
verwendensudo dos2unix /usr/local/bin/casperjs
oder sed:
sudo sed -i -e ‘s/r$//’ /usr/local/bin/casperjs
Wenn Sie Skripte unter Windows bearbeiten müssen, verwenden Sie einen Editor, der mit Unix-Zeilenenden zurechtkommt (d. h. etwas weniger hirntotes als Notepad), und stellen Sie sicher, dass er so konfiguriert ist, dass er Unix-Zeilenenden schreibt (d. h. nur LF), wenn Sie eine Unix-Datei bearbeiten.