Ejecutando script de Python desde la terminal de Linux

Ejecutando script de Python desde la terminal de Linux

Descargué este script llamado pyAES.py y lo puse en una carpeta con el nombre de códigos, dentro de un directorio de escritorio de mi Linux.

Según este ejemplo, http://brandon.sternefamily.net/2007/06/aes-tutorial-python-implementation/

Cuando escribo,

./pyAES.py -e testfile.txt -o testfile_encrypted.txt

se debe ejecutar el archivo pyAES.py. pero recibo este error,

pi@raspberrypi ~/Desktop/Codes $ pyAES.py
-bash: pyAES.py: command not found

la salida del ls -lcomando es,

pi@raspberrypi ~/Desktop/Codes $ ls -l
total 16
-rw-r--r-- 1 pi pi 14536 Oct  8 10:44 pyAES.py

Aquí está el resultado despuéschmod +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 $

y el comando, chmod +x pyAES.py && ./pyAES.pyda el siguiente error,

-bash: ./pyAES.py: /usr/bin/python2: bad interpreter: No such file or directory

También intenté mover el archivo en /usr/binel directorio y luego ejecutarlo.

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 $

Puedo ver que el archivo está presente en el directorio /usr/bin pero todavía aparece el error No existe tal archivo o directorio.

Quiero saber por qué la terminal de Linux no ejecuta el script de Python.

Respuesta1

Parece que tienes una línea mal escrita. Del error que estás recibiendo:

-bash: /usr/bin/pyAES.py: /usr/bin/python2: bad interpreter: No such file or directory

Yo diría que deberías establecer la primera línea de /usr/bin/pyAES.pyen

#!/correct/path/to/python

donde /correct/path/to/pythonse puede encontrar en la salida de:

type -P python

Está /usr/bin/python(no /usr/bin/python2) en mi sistema.

Respuesta2

El error "command not found"que obtiene se debe a que el ejecutable no existe en /bin/ninguna /usr/bin/de las rutas de $PATHla variable.

Cuando ejecuta cualquier comando, en el shell backend busca ese ejecutable/binario en PATH, por ejemplo. /bin/ /usr/bin/etc...

Entonces, si la ruta no se define correctamente, enfrentará este problema.

y cuando use " ./command" entonces ejecutará ese comando desde el directorio actual, la variable PATH no se usa para buscar el nombre del archivo

Respuesta3

El primer obstáculo es que necesitas decirle al shell dónde encontrar el programa. Si no coloca ninguna indicación de directorio, solo podrá ejecutar archivos ejecutables ubicados en la ruta de búsqueda de ejecutables descrita por las PATHvariables de entorno. El directorio actual no está en la ruta de búsqueda a menos que lo coloque allí. Así que corre ./pyAES.py.

Para ejecutar un programa, debe tener permisos de ejecución sobre él:

chmod +x pyAES.py

Si recibe un mensaje como "Mal intérprete: No existe tal archivo o directorio" o simplemente "No existe tal archivo o directorio" en un archivo que existe, significa que hay un error en el script.el asuntolínea. (Ver/bin/sh: ./check-dependencies.pl: no encontrado, ¡pero check-dependencies.pl existe!para una explicación más detallada.) La línea shebang es la primera línea del guión e indica la ubicación del intérprete.

Para evitar codificar la ruta a un intérprete (por ejemplo, /usr/bin/pythono /usr/local/bin/python), puede utilizar el /usr/bin/envprograma como un trampolín:

#!/usr/bin/env python

PEP 304especifica que #!/usr/bin/env python2es el momento adecuado para hacer referencia a Python 2.x. Sin embargo, existen muchos sistemas en los que Python 2.x solo se proporciona con el nombre pythony no con el nombre python2. Por lo tanto, es posible que tengas que hacer malabarismos entre los dos. Si tiene permisos de root y su distribución solo proporciona Python 2.x como pythono solo proporciona python2, cree un enlace simbólico al otro nombre.

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 editada en Windows. Elimine el CR: la línea shebang debe tener un Unixfinal de línea(sólo salto de línea).

Respuesta4

Me enfrenté al mismo error cuando lo intenté.py file1.py

La solución es muy sencilla, solo escribepython3 file1.py

información relacionada