Ich habe dieses Skript mit dem Namen pyAES.py heruntergeladen und in einem Ordner mit dem Namen Codes in einem Desktop-Verzeichnis meines Linux abgelegt.
Nach diesem Beispiel http://brandon.sternefamily.net/2007/06/aes-tutorial-python-implementation/
Wenn ich tippe,
./pyAES.py -e testfile.txt -o testfile_encrypted.txt
die Datei pyAES.py sollte ausgeführt werden. aber ich erhalte diesen Fehler,
pi@raspberrypi ~/Desktop/Codes $ pyAES.py
-bash: pyAES.py: command not found
Die Ausgabe des ls -l
Befehls lautet:
pi@raspberrypi ~/Desktop/Codes $ ls -l
total 16
-rw-r--r-- 1 pi pi 14536 Oct 8 10:44 pyAES.py
Hier ist die Ausgabe nachchmod +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 $
und der Befehl chmod +x pyAES.py && ./pyAES.py
gibt den folgenden Fehler aus,
-bash: ./pyAES.py: /usr/bin/python2: bad interpreter: No such file or directory
Ich habe auch versucht, die Datei in /usr/bin
das Verzeichnis zu verschieben und sie dann auszuführen.
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 $
Ich sehe, dass die Datei im Verzeichnis /usr/bin vorhanden ist, aber es wird immer noch die Fehlermeldung „Keine solche Datei oder kein solches Verzeichnis“ angezeigt.
Ich möchte wissen, warum das Linux-Terminal das Python-Skript nicht ausführt.
Antwort1
Es scheint, als hätten Sie eine schlecht geschriebene Shebang-Zeile. Aus dem Fehler, den Sie erhalten:
-bash: /usr/bin/pyAES.py: /usr/bin/python2: bad interpreter: No such file or directory
Ich würde sagen, Sie sollten die erste Zeile /usr/bin/pyAES.py
auf
#!/correct/path/to/python
wobei dies /correct/path/to/python
aus der Ausgabe von: zu entnehmen ist:
type -P python
Es ist /usr/bin/python
(nicht /usr/bin/python2
) auf meinem System.
Antwort2
"command not found"
Sie erhalten den Fehler , weil die ausführbare Datei nicht in der Variable vorhanden ist /bin/
oder /usr/bin/
alle Pfade darin fehlen $PATH
.
Wenn Sie einen beliebigen Befehl ausführen, sucht die Backend-Shell beispielsweise im Pfad nach der ausführbaren Datei/Binärdatei /bin/
/usr/bin/
usw.
Wenn der Pfad also nicht richtig definiert ist, tritt dieses Problem auf.
und wenn Sie " " verwenden, ./command
wird dieser Befehl aus dem aktuellen Verzeichnis ausgeführt. Die Variable PATH wird nicht zum Suchen nach dem Dateinamen verwendet.
Antwort3
Die erste Hürde besteht darin, dass Sie der Shell mitteilen müssen, wo das Programm zu finden ist. Wenn Sie keinen Verzeichnishinweis eingeben, können Sie nur ausführbare Dateien ausführen, die sich im durch die PATH
Umgebungsvariablen beschriebenen Suchpfad für ausführbare Dateien befinden. Das aktuelle Verzeichnis befindet sich nicht im Suchpfad, es sei denn, Sie geben es dort ein. Führen Sie daher „run“ aus ./pyAES.py
.
Um ein Programm auszuführen, müssen Sie über Ausführungsberechtigungen dafür verfügen:
chmod +x pyAES.py
Wenn Sie eine Meldung wie „Fehlerhafter Interpreter: Keine solche Datei oder kein solches Verzeichnis“ oder einfach „Keine solche Datei oder kein solches Verzeichnis“ für eine vorhandene Datei erhalten, bedeutet dies, dass ein Fehler im Skript vorliegt.siebangZeile. (Siehe/bin/sh: ./check-dependencies.pl: nicht gefunden – aber check-dependencies.pl existiert!für eine ausführlichere Erklärung.) Die Shebang-Zeile ist die erste Zeile des Skripts und gibt den Speicherort des Interpreters an.
Um die Festcodierung des Pfads zu einem Interpreter (z. B. /usr/bin/python
oder /usr/local/bin/python
) zu vermeiden, können Sie das /usr/bin/env
Programm als Trampolin verwenden:
#!/usr/bin/env python
PEP 304gibt an, dass dies #!/usr/bin/env python2
die richtige Art ist, auf Python 2.x zu verweisen. Es gibt jedoch viele vorhandene Systeme, bei denen Python 2.x nur unter dem Namen python
und nicht bereitgestellt wird python2
. Sie müssen also möglicherweise zwischen den beiden jonglieren. Wenn Sie Root-Berechtigungen haben und Ihre Distribution Python 2.x nur als python
oder nur bereitstellt python2
, erstellen Sie einen symbolischen Link zum anderen Namen.
Wenn Sie den Fehler „: Keine solche Datei oder kein solches Verzeichnis“ sehen (mit nichts vor dem Doppelpunkt), bedeutet das, dass Ihre Shebang-Zeile am Ende einen Wagenrücklauf hat, vermutlich weil sie unter Windows bearbeitet wurde. Entfernen Sie den Wagenrücklauf: Die Shebang-Zeile muss einen Unix habenZeilenende(nur Zeilenvorschub).
Antwort4
Beim Versuch trat der gleiche Fehler auf.py file1.py
Die Lösung ist ganz einfach: Geben Sie einfachpython3 file1.py