Aufrufen des Python 3-Skripts von AppleScript

Ich habe ein Python 3-Skript, das ich mit Automator als Dienst hinzufügen möchte. Die Idee ist, dass ich mit der rechten Maustaste auf eine Textdatei klicken kann und eine Option angezeigt wird, um mein Skript für diese Datei auszuführen.

Der Shebang für mein Python-Skript lautet wie folgt:

#!/usr/bin/env python3

Dieses Skript funktioniert gut und wie erwartet in Terminal. Wenn ich jedoch versuche, dies mit AppleScript/Automator wie folgt zu automatisieren:

on run {input, parameters}

tell application "Terminal"
    do shell script "/path/to/script.py $@"
end tell

return input
end run

Ich stoße auf Probleme, nämlich:

Terminal got an error: env: python3: No such file or directory

Ich habe hier unter anderem gelesen, dass AppleScript von Natur aus nur Zugriff auf Unix-Befehle zulässt und beispielsweise Ihr Bash-Profil nicht ausgibt (daher haben wir standardmäßig keinen Zugriff auf unseren $PATH). Ich hatte jedoch den Eindruck, dass die Bereitstellung expliziter Pfade eine Problemumgehung war.

Ich habe versucht, do shelldies zu ändern:

do shell script "/usr/bin/python3 /path/to/script.py $@"

und ich habe versucht, den Shebang so zu ändern:

#!/usr/bin/env /usr/bin/python3

Aber nichts scheint zu funktionieren. Ist es einfach nicht möglich, ein Python 3-Skript über AppleScript auszuführen? Ich konnte bei meinen Recherchen keine praktikable Lösung finden.

Bearbeiten: Zusatzinfo:

$ type -a python3
python3 is /usr/local/bin/python3
Starten Sie die Terminal-Anwendung und geben Sie Folgendes in Ihre Shell ein: type -a python3Bearbeiten Sie dann Ihren Beitrag mit dem Befehl und den Ergebnissen.
Erledigt. Da es so aussieht, als wäre dies ein anderer Pfad, frage ich mich, ob ich einen Symlink /usr/bin/python3zu /usr/local/bin/python3oder umgekehrt herstellen kann, um dieses Problem in der gesamten Umgebung zu vermeiden.
Warum erwarten Sie, dass das Shell-Skript "/usr/bin/python3 /path/to/script.py $@" funktioniert? Ihr python3 befindet sich in /usr/local/bin Was passiert, wenn Sie den richtigen Pfad verwenden?
Berühren. Ich war verwirrt, der Pfad auf meinem Linux-Server ist /usr/bin/python3so, dass ich ihn ohne Überprüfung verwendet habe.

Antworten (1)

Ich habe mein Problem gelöst, indem ich Folgendes geändert habe do shell:

do shell script "/usr/local/bin/python3 /path/to/script.py $@"

und den Shebang bleiben lassen als:

#!/usr/bin/env python3