Executando script python no Terminal Linux

Executando script python no Terminal Linux

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 -lcomando é,

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.pydá 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/bindiretó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.pycomo

#!/correct/path/to/python

onde o /correct/path/to/pythonpode 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 $PATHvariá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 PATHvariá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/pythonou /usr/local/bin/python), você pode usar o /usr/bin/envprograma 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 pythone 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 pythonou 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

informação relacionada