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 -l
comando 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.py
da el siguiente error,
-bash: ./pyAES.py: /usr/bin/python2: bad interpreter: No such file or directory
También intenté mover el archivo en /usr/bin
el 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.py
en
#!/correct/path/to/python
donde /correct/path/to/python
se 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 $PATH
la 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 PATH
variables 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/python
o /usr/local/bin/python
), puede utilizar el /usr/bin/env
programa como un trampolín:
#!/usr/bin/env python
PEP 304especifica que #!/usr/bin/env python2
es 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 python
y 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 python
o 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