Python Raspbian Python3-Script ausführbar machen

LukS

Commodore
Registriert
Dez. 2009
Beiträge
4.945
Hallo,

ich stehe gerade etwas auf der Leitung. Ich habe ein Python3-Skript geschrieben und möchte das auf meinem Raspberry mit Raspbian ausführbar machen, jedoch läuft es nicht so wie ich das möchte.

Wenn ich mein Skript mit "python3 datei.py" ausführe läuft alles perfekt.
Jetzt habe ich den Shebang "#!/usr/bin/env python3" oben eingefügt und mittels "chmod +x datei.py", das Skript ausführbar gemacht. Wenn ich das Skript nun mittels "./datei.py" starten möchte, dann kommt folgende Fehlermeldung:
: No such file or directory

Was habe ich falsch gemacht oder was habe ich vergessen?

Ich hoffe mal es kann mir einer helfen und das ich im richtigen Unterforum bin. Ich hab jetzt nicht gewusst ob das eher eine Frage fürs Raspberry Unterforum ist.

mfg LukS
 
LukS schrieb:
"#!/usr/bin/env python3"

Das sieht mir irgendwie nicht nach dem korrekten Pfad zum Python Interpreter aus... mit "which python3" auf der Shell kannst du dir den anzeigen lassen.
 
LukS schrieb:
"#!/usr/bin/env python3"
Ja du musst vermutlich das Leerzeichen vor python3 durch einen Backslash ersetzen und/oder wie angemerkt mit "which python3" einfach den pfad ausgeben lassen
 
"/usr/bin/env python3" startet deinen Python Interpreter wenn du es an deinem shellprompt eingibst?
An sich ist die Zeile korrekt. Nix unkorrekter Pfad oder Backslashblödsinn.
 
t (und nicht mit "env python3" ist das Leerzeichen innerhalb der Shebang ein untrügliches Zeichen dass da etwas faul ist ;-)

Das hat er nicht geschrieben. Das habe ich oben gefragt: er soll es am Prompt ausprobieren.
Bei mir (Debian) funktioniert es z.B. ohne Probleme exakt so wie er sein shebang geschrieben hat, d.h. die Zeile ist richtig, Leerzeichen und alles. Aber ob sein env z.B. funktioniert wissen wir eben nicht.
 
Oder mal testen ob das Programm "env" überhaupt installiert ist. Irgend wo her muss die Fehlermeldung ja kommen.

Edit: jepp, das mit dem env war mir vorhin noch nicht ganz so bewusst was das macht. Sah erst mal seltsam aus.
 
Antar3s schrieb:
Ja du musst vermutlich das Leerzeichen vor python3 durch einen Backslash ersetzen und/oder wie angemerkt mit "which python3" einfach den pfad ausgeben lassen
"which python3" zeigt mir folgendes an:
/usr/bin/python3

"which python":
/usr/bin/python

HominiLupus schrieb:
"/usr/bin/env python3" startet deinen Python Interpreter wenn du es an deinem shellprompt eingibst?
Wenn ich die Zeile in der Shell eingebe wird der Python 3.2.3 Interpreter gestartet. Also sollte das doch stimmen, oder?

Wenn ich als Shebang "#!/usr/bin/env/python3" eingeben kommt die Meldung:
bash: ./datei.py: /usr/bin/env/python3^M: bad interpreter: Not a directory

Wenn ich als Shebang "#!/usr/bin/python3" eingebe kommt ebenfalls die Meldung:
bash: ./datei.py: /usr/bin/python3^M: bad interpreter: No such file or directory

Wenn ich als Shebang "#!/usr/bin/env python3" nehme kommt:
: No such file or directory

Wenn ich ein Python2 Skript erstelle und oben als Shebang "#!/usr/bin/env python" einfüge, dann funktioniert alles.

Also sollte mein env funktionieren oder?

Edit: gerade getested: env python3
Der Befehl startet ebenfalls den Python 3 Interpreter.

Edit2:
Ich habe gerade zum Test eine weiter Datei Namens test.py erstellt.
Code:
#!/usr/bin/env python3
print("hello World")
Ich habe die jetzt ausführbar gemacht und dann anschließend gestartet. Siehe da es läuft... :freak:
Heißt das jetzt es liegt an meinem Skript? Obwohl es mittels "python3 datei.py" ohne Probleme läuft?!?
 
Zuletzt bearbeitet:
@LunaticLord
Vielen vielen Dank! Das war das Problem.
Ich hab das Skript ursprünglich unter Windows mittels Komodo geschrieben und dieser hat standartmäßig CR und LF als Newline eingefügt. Ich habe in Komodo eine Einstellung gefunden mit der man alle CR und LF auf nur LF (Unix-Konform) umstellen kann. Jetzt läuft es endlich ohne Probleme.
 
dachte mir das schon, als die die "^M" gesehen hab ;)

"dos2unix"oder so heißt der command
 
Auf die Idee das es am line feed liegen könnte, wäre ich im Leben nicht gekommen.

Danke für den Tipp mit "dos2unix". Hab ich gleich installiert und funktioniert super. :daumen:

Jetzt bin ich glücklich. Mein Skript läuft seit gestern 16:29 Uhr kontinuierlich ohne Fehler. :schluck:
 
Zurück
Oben