Eu baixei este script chamado pyAES.py e coloquei-o em uma pasta com o nome de códigos, dentro de um diretório Desktop do meu Linux,
De acordo com este exemplo, http://brandon.sternefamily.net/2007/06/aes-tutorial-python-implementation/
Quando eu digito,
./pyAES.py -e testfile.txt -o testfile_encrypted.txt
o arquivo pyAES.py deve ser executado. mas estou recebendo esse erro,
pi@raspberrypi ~/Desktop/Codes $ pyAES.py
-bash: pyAES.py: command not found
a saída do ls -l
comando é,
pi@raspberrypi ~/Desktop/Codes $ ls -l
total 16
-rw-r--r-- 1 pi pi 14536 Oct 8 10:44 pyAES.py
Aqui está a saída depoischmod +x
pi@raspberrypi ~/Desktop/Codes $ chmod +x pyAES.py pi@raspberrypi ~/Desktop/Codes $
pi@raspberrypi ~/Desktop/Codes $ pyAES.py
-bash: pyAES.py: command not found
pi@raspberrypi ~/Desktop/Codes $
e o comando chmod +x pyAES.py && ./pyAES.py
dá o seguinte erro,
-bash: ./pyAES.py: /usr/bin/python2: bad interpreter: No such file or directory
Eu também tentei mover o arquivo no /usr/bin
diretório e executá-lo,
pi@raspberrypi /usr/bin $ pyAES.py
-bash: /usr/bin/pyAES.py: /usr/bin/python2: bad interpreter: No such file or directory
pi@raspberrypi /usr/bin $
Posso ver que o arquivo está presente no diretório /usr/bin, mas ainda está apresentando um erro de que esse arquivo ou diretório não existe.
Quero saber por que o terminal Linux não está executando o script python?
Responder1
Parece que você tem uma frase mal escrita. Do erro que você está recebendo:
-bash: /usr/bin/pyAES.py: /usr/bin/python2: bad interpreter: No such file or directory
Eu diria que você deveria definir a primeira linha de /usr/bin/pyAES.py
como
#!/correct/path/to/python
onde o /correct/path/to/python
pode ser encontrado na saída de:
type -P python
Está /usr/bin/python
(não /usr/bin/python2
) no meu sistema.
Responder2
O erro "command not found"
que você está recebendo porque esse executável não existe em /bin/
ou em /usr/bin/
todos os caminhos da $PATH
variável.
Quando você executa qualquer comando, no shell de backend procura aquele executável/binário em PATH , por exemplo. /bin/
/usr/bin/
etc...
Portanto, se o caminho não for definido corretamente, você enfrentará esse problema.
e quando você usa " ./command
" então ele irá executar aquele comando do diretório atual, a variável PATH não é usada para procurar o nome do arquivo
Responder3
O primeiro obstáculo é que você precisa informar ao shell onde encontrar o programa. Se você não colocar nenhuma indicação de diretório, poderá executar apenas arquivos executáveis localizados no caminho de pesquisa do executável descrito pelas PATH
variáveis de ambiente. O diretório atual não está no caminho de pesquisa, a menos que você o coloque lá. Então corra ./pyAES.py
.
Para executar um programa, você deve ter permissões de execução:
chmod +x pyAES.py
Se você receber uma mensagem como “intérprete incorreto: arquivo ou diretório inexistente” ou simplesmente “arquivo ou diretório inexistente” em um arquivo que existe, significa que há um erro no script.Shebanglinha. (Ver/bin/sh: ./check-dependencies.pl: não encontrado - mas check-dependencies.pl existe!para uma explicação mais detalhada.) A linha shebang é a primeira linha do script e indica a localização do intérprete.
Para evitar codificar o caminho para um intérprete (por exemplo, /usr/bin/python
ou /usr/local/bin/python
), você pode usar o /usr/bin/env
programa como um trampolim:
#!/usr/bin/env python
PEP 304especifica que #!/usr/bin/env python2
é o momento certo para se referir ao Python 2.x. No entanto, existem muitos sistemas existentes onde o Python 2.x é fornecido apenas sob o nome python
e não python2
. Então você pode ter que fazer malabarismos entre os dois. Se você tiver permissões de root e sua distribuição fornecer apenas Python 2.x como python
ou apenas fornecer python2
, crie um link simbólico para o outro nome.
Se você vir o erro “: Nenhum arquivo ou diretório” (sem nada antes dos dois pontos), significa que sua linha shebang tem um retorno de carro no final, provavelmente porque foi editada no Windows. Remova o CR: a linha shebang precisa ter um Unixfinal de linha(somente avanço de linha).
Responder4
Eu enfrentei o mesmo erro quando tenteipy file1.py
A solução é muito simples, basta digitarpython3 file1.py