Esse arquivo ou diretório não existe, mas eu posso vê-lo!

11

Estou tentando executar um script python, em um PI framboesa sem cabeça usando o winSCP e receba a seguinte mensagem de erro:

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

Quando tento executar no terminal, recebo:

: No such file or directory.

Eu tento um script python semelhante, no mesmo diretório, com o mesmo shebang python, as mesmas permissões e usando o mesmo usuário pi, e funciona.

Também faço um lse consigo ver o arquivo, então não sei por que ele não será executado.

reggie
fonte
1
Você editou `areadetect_movie_21.py 'no Windows? Se você viu este askubuntu.com/a/372691 .
Arkadiusz Drabczyk 10/03/2015
sim no eclipse, por que?
22815 Reggie
Eu editei meu comentário depois de adicioná-lo. Veja este askubuntu.com/a/372691 .
Arkadiusz Drabczyk 10/03/2015
sim sim sim funcionou, muito obrigado! você pode converter seu comentário em uma resposta para que eu possa aceitá-lo?
22815 Reggie
ok, eu fiz isso :)
Arkadiusz Drabczyk

Respostas:

28

No AskUbuntu , responda por Gilles :

Se você vir o erro “: Não existe esse arquivo ou diretório” (sem nada antes dos dois pontos), significa que sua linha shebang possui um retorno de carro no final, provavelmente porque foi editada no Windows (que usa CR, LF como um separador de linha). O caractere CR faz com que o cursor volte ao início da linha depois que o shell imprime o início da mensagem e, portanto, você só consegue ver a parte após o CR que encerra a sequência do interpretador que faz parte da mensagem de erro.

Remova o CR: a linha shebang precisa ter uma linha Unix finalizada (apenas avanço de linha). O próprio Python permite terminações de linha CRLF, para que os caracteres CR em outras linhas não sejam prejudicados. Os scripts de shell, por outro lado, devem estar livres de caracteres CR.

Para remover as terminações de linha do Windows, você pode usar o dos2unix :

sudo dos2unix / usr / local / bin / casperjs

ou sed:

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

Se você precisar editar scripts no Windows, use um editor que lide com as terminações de linha do Unix (ou seja, com menos morte cerebral que o Bloco de Notas) e verifique se ele está configurado para gravar as terminações de linha do Unix (somente LF) ao editar um arquivo Unix.

Arkadiusz Drabczyk
fonte
1
Abri o arquivo, no pi, via ssh no bloco de notas no meu PC com Windows e removi o retorno de carro e ele funciona :) Muito obrigado.
22815 Reggie