Seite 1 von 1
Ubuntu führt Python Skripte über Dateimanager nicht aus
Verfasst: Samstag 18. August 2012, 08:40
von Seires
Hey,
ich habe ein mir unerklärliches Problem unter Ubuntu 12.04:
Ich habe mehrere Programme grafisch mit Hilfe von PyQt4 und easygui erstellt. Wenn ich diese über IDLE oder Spyder (in python3) laufen lasse, funktioniert alles problemlos. Auch wenn ich Sie mit der Konsole aufrufe, solange ich sie eben mit python3 und nicht mit python aufrufe, funktioniert alles.
Wenn ich nun aber die Datei einfach in Dateimanager anklicke, öffnet sich erst das Fenster, ob ich die Datei anzeigen, ausführen oder im Terminal ausführen will, wenn ich nun ausführen oder im Terminal ausführen anklicke, tut sich aber nichts weiter und die Programme scheinen nicht zu starten und das obwohl ich als shebang
eingetragen habe.
Weiß jemand von euch, woran das liegen könnte?
Vielen Dank schonmal für eure Hilfe!
Re: Ubuntu führt Python Skripte über Dateimanager nicht aus
Verfasst: Samstag 18. August 2012, 08:45
von BlackJack
@Seires: Sind die Dateien ausführbar? Also ist das Executable-Bit bei den Dateieigenschaften gesetzt? Landen irgendwelche Ausgaben in der ``.xsession-errors``-Datei in Deinem Heimatverzeichnis? Funktioniert es wenn Du „in der Konsole ausführen” auswählst? Trifft Dein Programm vielleicht irgendwelche Annahmen was das aktuelle Arbeitsverzeichnis ist?
Edit: Vielleicht als erste überprüfen: Was passiert wenn Du das Programm direkt auf der Konsole startest, also weder ``python`` noch ``python3`` in der Konsole davor schreiben — läuft es *dann*?
Re: Ubuntu führt Python Skripte über Dateimanager nicht aus
Verfasst: Sonntag 19. August 2012, 13:39
von Seires
Sind die Dateien ausführbar? Also ist das Executable-Bit bei den Dateieigenschaften gesetzt? -> Ja, habe es auch nochmal überprüft.
Landen irgendwelche Ausgaben in der ``.xsession-errors``-Datei in Deinem Heimatverzeichnis? -> Finde keine Ausgaben, die in Zusammenhang mit meinen Python-.Skripten stehen.
Funktioniert es wenn Du „in der Konsole ausführen” auswählst? -> Nein, dann öffnet sich nur kurz das Konsolenfenster und schließt sich sofort wieder.
Trifft Dein Programm vielleicht irgendwelche Annahmen was das aktuelle Arbeitsverzeichnis ist? -> Nein, eigentlich auch nicht.
Was passiert wenn Du das Programm direkt auf der Konsole startest, also weder ``python`` noch ``python3`` in der Konsole davor schreiben — läuft es *dann*? -> Wie kann ich das Programm denn starten, ohne "python" vorzusetzen? Wenn ich einfach nur Verzeichnis + Dateinamen angebe kommt bei mir "Befehl nicht gefunden"
Vermute inzwischen, dass das Programm korrekt startet und auch die shebang-Zeile beachtet, sich aber aus irgendwelchen Gründen sofort wieder schließt... Weißt du, woran das liegen könnte?
Re: Ubuntu führt Python Skripte über Dateimanager nicht aus
Verfasst: Sonntag 19. August 2012, 13:44
von Hyperion
Seires hat geschrieben: Wie kann ich das Programm denn starten, ohne "python" vorzusetzen? Wenn ich einfach nur Verzeichnis + Dateinamen angebe kommt bei mir "Befehl nicht gefunden"
Du musst einen Punkt davor setzen, wenn Du eine relative Pfadangabe machst:
Alternativ kannst Du das auch mit einem absoluten Pfad aufrufen:
Re: Ubuntu führt Python Skripte über Dateimanager nicht aus
Verfasst: Sonntag 19. August 2012, 14:03
von Seires
Ich bin jetzt erst per cd in das Verzeichnis, in dem das Programm liegt, gewechselt und habe dann
eingegeben. Dann bekomme ich aber als Fehlermeldung:
Das gleiche tritt auch auf, wenn ich den absoluten Pfad aufrufe...
Edit: Ich habe mal testweise eine Datei aufgerufen, die wirklich nicht vorhanden ist, dann bekomme ich auch eine andere Fehlermeldung:
Code: Alles auswählen
bash: ./Programm.py: Datei oder Verzeichnis nicht gefunden
Re: Ubuntu führt Python Skripte über Dateimanager nicht aus
Verfasst: Sonntag 19. August 2012, 14:13
von BlackJack
@Seires: Dann solltest Du Dir noch mal ganz genau den Inhalt der Datei anschauen. Kann es zum Beispiel sein, dass Du Windows-Zeilenenden-Zeichen benutzt? Denn dann wird versucht einen Interpeter mit dem Dateinamen 'python3\r' zu finden und den gibt es nicht. Das Wagenrücklaufzeichen am Ende der Quelltextzeile sorgt dann dafür, dass die beobachtete Ausgabe angezeigt wird, weil der Cursor am Ende des Namens an den Zeilenanfang springt und der Rest der Fehlermeldung den Anfang überschreibt.
Re: Ubuntu führt Python Skripte über Dateimanager nicht aus
Verfasst: Sonntag 19. August 2012, 14:46
von lunar
@Seires Zeige doch bitte mal die Ausgabe des Kommands "od -c NameMeinesProgrammes.py | head", wobei Du "NameMeinesProgramms.py" mit dem Pfad zur entsprechenden Python-Datei ersetzt.
Re: Ubuntu führt Python Skripte über Dateimanager nicht aus
Verfasst: Sonntag 19. August 2012, 16:20
von Seires
BlackJack hat geschrieben:@Seires: Dann solltest Du Dir noch mal ganz genau den Inhalt der Datei anschauen. Kann es zum Beispiel sein, dass Du Windows-Zeilenenden-Zeichen benutzt? Denn dann wird versucht einen Interpeter mit dem Dateinamen 'python3\r' zu finden und den gibt es nicht. Das Wagenrücklaufzeichen am Ende der Quelltextzeile sorgt dann dafür, dass die beobachtete Ausgabe angezeigt wird, weil der Cursor am Ende des Namens an den Zeilenanfang springt und der Rest der Fehlermeldung den Anfang überschreibt.
Was wären den "Windows-Zeilenenden-Zeichen"? Woran kann ich das erkennen? Irgendetwas offensichtlich komisches fällt mir leider nicht auf...
lunar hat geschrieben:@Seires Zeige doch bitte mal die Ausgabe des Kommands "od -c NameMeinesProgrammes.py | head", wobei Du "NameMeinesProgramms.py" mit dem Pfad zur entsprechenden Python-Datei ersetzt.
Kommt:
Code: Alles auswählen
0000000 # ! / u s r / b i n / e n v p
0000020 y t h o n 3 \r \n \r \n i m p o r t
0000040 s y s , o s , e a s y g u
0000060 i \r \n f r o m P y Q t 4 i m
0000100 p o r t Q t G u i , Q t C o
0000120 r e \r \n f r o m U I z u P Y
0000140 _ U b u n t u i m p o r t U
0000160 i _ D U I z u P Y a s D l g
0000200 \r \n \r \n c l a s s U I z u P Y
0000220 _ U b u n t u ( Q t G u i . Q D
Re: Ubuntu führt Python Skripte über Dateimanager nicht aus
Verfasst: Sonntag 19. August 2012, 16:35
von Hyperion
Bingo! Da stehen "\r\n"-Zeilenenden drin - unter Linux darf es nur "\n" sein. Du kannst das Tool `dos2unix` nutzen, um die Datei auf die richtigen Dateiendungen umzustellen.
Re: Ubuntu führt Python Skripte über Dateimanager nicht aus
Verfasst: Sonntag 19. August 2012, 17:29
von lunar
@Seires Führe "dos2unix NameMeinesProgrammes.py" aus, um die Zeilenenden Deiner Programme zu korrigieren, und Dein Problem zu beheben. Achte in Zukunft auf diesen Umstand, wenn Du unter Windows programmierst, und Deine Skripte dann unter Linux ausführst, entweder indem Du unter Windows Deinen Editor zur Nutzung von Linux-Zeilenenden umkonfigurierst, oder indem Du genanntes Kommando ausführst, bevor Du die Skripte auf Linux ausführst.
Die Hintergründe dieser Problematik werden auf
Wikipedia erklärt.
Re: Ubuntu führt Python Skripte über Dateimanager nicht aus
Verfasst: Sonntag 19. August 2012, 22:53
von Seires
Perfekt, vielen Dank! Jetzt funktioniert alles!
