No existe tal archivo o directorio, pero puedo verlo.

11

Estoy tratando de ejecutar un script de Python, en un Raspberry PI sin cabeza usando winSCP y obtengo el siguiente mensaje de error:

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

Cuando intento ejecutar desde la terminal, obtengo:

: No such file or directory.

Intento con un script de Python similar, en el mismo directorio, con el mismo shebang de Python, los mismos permisos y usando el mismo usuario pi, y funciona.

También hago un lsy puedo ver el archivo, así que no sé por qué no se ejecutará.

reggie
fuente
1
¿Editó `areadetect_movie_21.py 'en Windows? Si vio esto askubuntu.com/a/372691 .
Arkadiusz Drabczyk
sí en eclipse, ¿por qué?
Reggie
Edité mi comentario después de haberlo agregado. Ver este askubuntu.com/a/372691 .
Arkadiusz Drabczyk
si si si funcionó, muchas gracias! ¿Puedes convertir tu comentario en una respuesta para que pueda aceptarlo?
Reggie
ok, lo hice :)
Arkadiusz Drabczyk

Respuestas:

28

De AskUbuntu , respuesta de Gilles :

Si ve el error ": No existe tal archivo o directorio" (sin nada antes de los dos puntos), significa que su línea shebang tiene un retorno de carro al final, presumiblemente porque fue editado en Windows (que usa CR, LF como separador de línea). El carácter CR hace que el cursor retroceda al comienzo de la línea después de que el shell imprime el comienzo del mensaje y, por lo tanto, solo puede ver la parte después de CR que finaliza la cadena de intérprete que es parte del mensaje de error.

Elimine el CR: la línea shebang debe tener un final de línea Unix (solo salto de línea). Python mismo permite terminaciones de línea CRLF, por lo que los caracteres CR en otras líneas no duelen. Los scripts de shell, por otro lado, deben estar libres de caracteres CR.

Para eliminar las terminaciones de línea de Windows, puede usar dos2unix :

sudo dos2unix / usr / local / bin / casperjs

o sed:

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

Si debe editar scripts en Windows, use un editor que haga frente a las terminaciones de línea de Unix (es decir, algo menos mortal que el Bloc de notas) y asegúrese de que esté configurado para escribir terminaciones de línea de Unix (es decir, solo LF) al editar un archivo Unix.

Arkadiusz Drabczyk
fuente
1
Abrí el archivo, en el pi, a través de ssh en el bloc de notas en mi PC con Windows y eliminé el retorno de carro y funciona :) Muchas gracias.
Reggie