Llamar al script de Python 3 desde AppleScript

Tengo un script de Python 3 que me gustaría agregar como servicio usando Automator. La idea es que puedo hacer clic derecho en un archivo de texto y aparecerá una opción para ejecutar mi script en dicho archivo.

El shebang para mi secuencia de comandos de Python es el siguiente:

#!/usr/bin/env python3

Este script funciona bien y como se esperaba en Terminal. Sin embargo, cuando intento automatizar esto con AppleScript/Automator así:

on run {input, parameters}

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

return input
end run

Me encuentro con problemas, a saber:

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

He leído aquí , entre otros lugares, que AppleScript por diseño solo permite el acceso a los comandos de Unix y, por ejemplo, no generará su perfil de bash (por lo tanto, no tenemos acceso a nuestro $PATH de forma predeterminada). Sin embargo, tenía la impresión de que proporcionar rutas explícitas era una solución.

He intentado cambiar el do shella esto:

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

y he intentado cambiar el shebang a esto:

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

Pero nada parece funcionar. ¿Simplemente no es posible ejecutar un script de Python 3 a través de AppleScript? No he podido encontrar una solución viable en mis búsquedas.

Editar: Información adicional:

$ type -a python3
python3 is /usr/local/bin/python3
Inicie la aplicación Terminal y escriba lo siguiente en su shell: type -a python3luego edite su publicación con el comando y los resultados.
Hecho. Dado que parece que ese es un camino diferente, me pregunto si puedo enlazar /usr/bin/python3o /usr/local/bin/python3viceversa para evitar este problema en todo el entorno.
¿Por qué espera que funcione el script de shell "/usr/bin/python3 /path/to/script.py $@"? Su python3 está en /usr/local/bin ¿Qué sucede si usa la ruta correcta?
Toca. Me confundí, la ruta en mi servidor Linux es /usr/bin/python3así que la usé sin verificar.

Respuestas (1)

Resolví mi problema cambiando el do shella:

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

y dejando que el shebang se quede como:

#!/usr/bin/env python3