Python-Script starten

Grettir

Aktives Mitglied
Thread Starter
Mitglied seit
02.04.2011
Beiträge
3.009
Die Frage ist natürlich völlig doof, aber ich kriege es nicht raus: Wie kann ich unter Calatina ein Python-Script starten? Unter Windows ist es ja leicht. Aber hier geht es mit dem Doppelklick erst mal gar nicht, und wenn ich es mit Rechtsklick und "Öffnen mit… Python Launcher" versuche, öffnet sich der PythonLauncher, und das ist alles. Was mache ich da falsch?
 

Mankind75

Aktives Mitglied
Mitglied seit
28.06.2005
Beiträge
2.110
Hast Du es eventuell mal über das Terminal versucht?
 

Grettir

Aktives Mitglied
Thread Starter
Mitglied seit
02.04.2011
Beiträge
3.009
Ja. Das geht natürlich. Aber wie starte ich das Script vom Finder aus? Das muss doch auch gehen. Oder irre ich? Irgendeinen Sinn muss der Python Launcher doch haben. Oder nicht?
 

Grettir

Aktives Mitglied
Thread Starter
Mitglied seit
02.04.2011
Beiträge
3.009
Das ist schon geschehen. Hilft nichts. Übrigens kommt auch keine Fehlermeldung. Es geht einfach das Fenster Einstellungen auf und fertig. Scheint ein tolles Stück Software zu sein.
 

Schiffversenker

Aktives Mitglied
Mitglied seit
25.06.2012
Beiträge
11.035
Was macht das Skript denn?

Ergänzt: Soll es überhaupt eine Ausgabe anzeigen oder macht es vieleicht nur etwas im Hintergrund?

Ist es die passende Python-Version?
Läuft es, wenn du es per Launcher im Terminalfenster laufen lässt, da gibt es ja diesen Haken?
 

Grettir

Aktives Mitglied
Thread Starter
Mitglied seit
02.04.2011
Beiträge
3.009
Den Haken gibt es, aber er bewirkt nichts. Das Terminalfenster geht nicht auf. Wenn das Einstellungsfenster des Launchers geöffnet ist, wird nach dem Doppelklick auf die Skriptdatei ein zweites sehr kurz angezeigt und verschwindet sofort. Ist es nicht geöffnet, wird es geöffnet und bleibt offen. Die Einstellungen haben keinen Einfluss darauf. Wenn ich das Skript (es macht so gut wie nichts, es öffnet eine Textdatei und schreibt eine Zeile hinein) vom Terminal aus starte, erledigt es seine Aufgabe sehr gut. Nur der Launcher scheint vollkommen nutzlos zu sein. Die Python-Version passt, wie gesagt, es funktioniert gut. Der Pfad zum Interpreter ist der richtige, wenn ich den im Terminal eingebe, klappt alles, wie es soll. Aber ich würde auf den Weg über das Terminal gern verzichten. Und ich habe verstanden, dass dies der Sinn des Launchers ist. Das scheint aber nicht zu stimmen...
 

Schiffversenker

Aktives Mitglied
Mitglied seit
25.06.2012
Beiträge
11.035
Die Dokumentation zu Python (https://docs.python.org/2/using/mac.html) sagt eigentlich, daß das so laufen sollte, wie du es wünschst.
Ich tippe mal auf einen weiteren Bug in Catalina. Oder daß der Launcher nicht angepasst ist - der stammt ja nicht von Apple.
Hast du den nach der Catalina-Installation installiert oder aktualisiert?


Nachtrag:
Der aktuelle Pfad zur Dokumentation ist natürlcih https://docs.python.org/3/using/mac.html
Keine Ahnung, warum Google den alten Pfad als erstes ausspuckt.
 

Grettir

Aktives Mitglied
Thread Starter
Mitglied seit
02.04.2011
Beiträge
3.009
Ja, ja. Es ist ein ganz neues MacBook mit Catalina, auf dem ich Python installiert habe. Damit auch den Python Launcher. Naja. Vermutlich ist es ein Problem mit Catalina. Und vermutlich wird es dabei bleiben. Sehr ärgerlich, aber so ist es nun mal.

Ich kenne die Dokumentation und habe da auch gelesen, dass das alles ganz problemlos genauso funktioniert, wie man erwarten sollte. Nur ist es eben leider nicht so. Na, gut. Es muss eben anders gehen.

Danke jedenfalls für den Versuch, mir zu helfen. Was nicht geht, geht natürlich nicht...
 

ruerueka

Aktives Mitglied
Mitglied seit
04.04.2004
Beiträge
1.507
Ich würde mir als Notbehelf ein Shell-Skript schreiben, das das Programm aufruft, ausführbar machen und als *.command-Datei auf den Schreibtisch legen (ich hoffe mal, dass Catalina das noch immer kann). Dann kann man das Programm mit Doppelklick starten...
 

Grettir

Aktives Mitglied
Thread Starter
Mitglied seit
02.04.2011
Beiträge
3.009
Vielen Dank, das ist schon ein großer Schritt in die Richtung, die ich meine. Jetzt bleibt eigentlich nur noch eine Frage: Kann ich erreichen, dass sich das Terminalfenster nach dem Start des Scripts wieder schließt? Wenn ich an die Befehlszeile ein »&« anhänge, ist das ja möglich, ohne dass die im Terminal gestarteten Prozesse beendet werden. Nun würde ich gern das inaktive Fenster loswerden. Geht das auch? Dann habe ich ja fast dasselbe wie den Python-Launcher...

Nochmals vielen Dank! Ich bin selbst auf eine bessere Lösung gekommen, auf die ich allerdings ohne Deine Hilfe nicht gekommen wäre: Ein Automator-Programm, dass den Shell-Befehl ausführt, tut genau das, was ich will. (Mit Apple-Script würde es sicher auch gehen, aber so ist es einfacher.)

Alles gut. Danke für die Hilfe!
 

warnochfrei

Aktives Mitglied
Mitglied seit
02.03.2019
Beiträge
1.355

wegus

Aktives Mitglied
Mitglied seit
13.09.2004
Beiträge
17.059
Nö, die Shell kannst du dabei ganz weglassen: #!/usr/bin/env python3.
:p und genau dieses Kommando wird von der jeweiligen Shell ausgeführt. In den allermeisten Fällen ist das eine Bash. Aber jeder Jeck ist anders und ich wollte genau den Ratschlag geben, hatte aber zum selbertexten keine Zeit vorhin. Drum der schnelle Link.
 

wegus

Aktives Mitglied
Mitglied seit
13.09.2004
Beiträge
17.059
Nö. Seit 1980 macht das in Unix der Kernel, in anderen Systemen inzwischen auch. Aber gut, neumodischer Firlefanz... :)



Das stimmt nicht.
Ich helf Dir mal: Was meinst Du warum der Shebang mit dem Kommentarzeichen für die Shell beginnt und wer wohl dem Kernel ( genauer dem Elf-Loader bei LINUX) das Kommando zum Start übergibt? Ob das nun wirklich die bash ist oder nicht, ein Shebang funktioniert in der Regel in allen shells. Die Shell reicht den nur durch, das stimmt. Wie jedes Kommando das nativ implementiert ist.
 

warnochfrei

Aktives Mitglied
Mitglied seit
02.03.2019
Beiträge
1.355
Was meinst Du warum der Shebang mit dem Kommentarzeichen für die Shell beginnt
Damit ein weniger kluger Nutzer ein Nichtshellscript auch einfach in eine Shell kippen kann. :rolleyes2:

wer wohl dem Kernel ( genauer dem Elf-Loader bei LINUX) das Kommando zum Start übergibt?
Der Systemmechanismus, der beim Ausführen eines ausführbaren Scripts guckt, was er damit denn jetzt anfangen soll. Das ist übrigens ebenfalls eine Kernelroutine. Es ist technisch eben ein Unterschied, ob du "./script.py" oder "sh ./script.py" ausführst. Das erste schickt direkt eine Kernelanfrage, das zweite öffnet eine Shell und die schickt das Script dann an den Kernel zur Auswertung weiter.

So weit mein Verständnis.