Keine solche Datei oder Verzeichnis, aber ich kann es sehen!

11

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 laufen, erhalte ich:

: No such file or directory.

Ich versuche ein ähnliches Python-Skript im selben Verzeichnis mit demselben Python-Shebang, denselben Berechtigungen und demselben Benutzer-Pi, und es funktioniert.

Ich mache auch eine lsund ich kann die Datei sehen, daher weiß ich nicht, warum sie nicht ausgeführt wird.

Reggie
quelle
1
Haben Sie "areadetect_movie_21.py" unter Windows bearbeitet? Wenn Sie dies gesehen haben askubuntu.com/a/372691 .
Arkadiusz Drabczyk
ja in eclipse, warum?
Reggie
Ich habe meinen Kommentar bearbeitet, nachdem ich ihn hinzugefügt habe. Siehe diese askubuntu.com/a/372691 .
Arkadiusz Drabczyk
ja ja ja es hat funktioniert, vielen Dank! Kannst du deinen Kommentar in eine Antwort umwandeln, damit ich ihn akzeptieren kann?
Reggie
ok, ich habe es geschafft :)
Arkadiusz Drabczyk

Antworten:

28

Von AskUbuntu , Antwort von Gilles :

Wenn Sie den Fehler ": Keine solche Datei oder kein solches Verzeichnis" 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 verwendet) Zeilentrennzeichen). Das CR-Zeichen bewirkt, dass der Cursor zum Zeilenanfang zurückkehrt, nachdem die Shell den Anfang der Nachricht gedruckt hat, sodass Sie nur den Teil nach CR sehen, der die Interpreter-Zeichenfolge beendet, die Teil der Fehlermeldung ist.

Entfernen Sie die CR: Die Shebang-Linie muss ein Unix- Linienende haben (nur Zeilenvorschub). Python selbst erlaubt CRLF-Zeilenenden, sodass die CR-Zeichen in anderen Zeilen nicht schaden. Shell-Skripte hingegen müssen frei von CR-Zeichen sein.

Um die Windows-Zeilenenden zu entfernen, können Sie dos2unix verwenden :

sudo dos2unix / usr / local / bin / casperjs

oder sed:

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

Wenn Sie Skripte unter Windows bearbeiten müssen, verwenden Sie einen Editor, der mit Unix-Zeilenenden zurechtkommt (dh etwas, das weniger hirntot ist als Notepad), und stellen Sie sicher, dass er so konfiguriert ist, dass er beim Bearbeiten einer Unix-Datei Unix-Zeilenenden (dh nur LF) schreibt.

Arkadiusz Drabczyk
quelle
1
Ich habe die Datei auf dem Pi über ssh im Editor auf meinem Windows-PC geöffnet und den Wagenrücklauf entfernt und es funktioniert :) Vielen Dank.
Reggie