Snažím se spustit python skript na bezhlavém Raspberry PI pomocí winSCP a zobrazí se následující chybová zpráva:
Command '"./areadetect_movie_21.py"'
failed with return code 127 and error message
/usr/bin/env: python
: No such file or directory.
Když se pokusím spustit z terminálu, dostanu:
: No such file or directory.
Zkouším podobný python skript, ve stejném adresáři, se stejným python shebangem, stejnými oprávněními a pomocí stejného uživatele pi, a funguje to.
Dělám také ls
a vidím soubor, takže nevím, proč se nespustí.
Přijatá odpověď:
Z AskUbuntu, odpověď Gillese:
Pokud se zobrazí chyba „:Žádný takový soubor nebo adresář“ (bez ničeho před dvojtečkou), znamená to, že váš řádek shebang má na konci návrat vozíku, pravděpodobně proto, že byl upraven pod Windows (který používá CR,LF jako oddělovač řádků). Znak CR způsobí, že se kurzor přesune zpět na začátek řádku poté, co shell vytiskne začátek zprávy, takže uvidíte pouze část za CR, která končí řetězec interpretu, který je součástí chybové zprávy.
Odstraňte CR:řádek shebang musí mít zakončení řádku Unix (pouze posun řádku). Samotný Python umožňuje zakončení řádků CRLF, takže znaky CR na jiných řádcích nejsou na škodu. Na druhé straně skripty shellu nesmí obsahovat znaky CR.
Chcete-li odstranit konce řádků Windows, můžete použít dos2unix:
sudo dos2unix /usr/local/bin/casperjs
nebo sed:
sudo sed -i -e ‘s/r$//’ /usr/local/bin/casperjs
Pokud musíte upravovat skripty pod Windows, použijte editor, který si poradí s unixovými konci řádků (tj. něco méně mozkově mrtvého než Poznámkový blok) a ujistěte se, že je nakonfigurován tak, aby při úpravách unixového souboru zapisoval unixové konce řádků (tj. pouze LF).