Nessun file o directory di questo tipo, ma posso vederlo!


11

Sto cercando di eseguire uno script Python, su un Raspberry PI senza testa usando winSCP e ottenere il seguente messaggio di errore:

Command '"./areadetect_movie_21.py"'
failed with return code 127 and error message
/usr/bin/env: python
: No such file or directory.

Quando provo ad eseguire dal terminale, ottengo:

: No such file or directory.

Provo uno script Python simile, nella stessa directory, con lo stesso python shebang, le stesse autorizzazioni e usando lo stesso utente pi, e funziona.

Faccio anche un lse posso vedere il file, quindi non so perché non verrà eseguito.


1
Hai modificato `areadetect_movie_21.py 'su Windows? Se hai visto questo askubuntu.com/a/372691 .
Arkadiusz Drabczyk

sì in eclissi, perché?
Reggie

Ho modificato il mio commento dopo averlo aggiunto. Vedi questo askubuntu.com/a/372691 .
Arkadiusz Drabczyk,

si si si ha funzionato, grazie mille! puoi convertire il tuo commento in una risposta in modo che io possa accettarlo.
Reggie

ok, l'ho fatto :)
Arkadiusz Drabczyk

Risposte:


28

Da AskUbuntu , risposta di Gilles :

Se viene visualizzato l'errore ": nessun file o directory" (con nulla prima dei due punti), significa che la riga shebang ha un ritorno a capo alla fine, presumibilmente perché è stata modificata in Windows (che utilizza CR, LF come separatore di linea). Il carattere CR fa tornare il cursore all'inizio della riga dopo che la shell ha stampato l'inizio del messaggio e quindi si vede solo la parte dopo CR che termina la stringa dell'interprete che fa parte del messaggio di errore.

Rimuovi CR: la linea shebang deve avere un finale di linea Unix (solo linefeed). Lo stesso Python consente di terminare le linee CRLF, quindi i caratteri CR su altre linee non fanno male. Gli script della shell invece devono essere privi di caratteri CR.

Per rimuovere i finali di linea di Windows, puoi usare dos2unix :

sudo dos2unix / usr / local / bin / casperjs

o sed:

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

Se è necessario modificare gli script in Windows, utilizzare un editor che gestisca i finali di linea Unix (ovvero qualcosa di meno morto rispetto al Blocco note) e assicurarsi che sia configurato per scrivere i finali di linea Unix (cioè solo LF) quando si modifica un file Unix.


1
Ho aperto il file, sul pi, tramite ssh nel blocco note sul mio PC Windows e rimosso il ritorno a capo e funziona :) Grazie mille.
Reggie
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.