Использование Applescript для запуска скрипта Python - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь использовать Applescript для запуска скрипта Python. Когда я запускаю его из терминала, все работает нормально, но когда я запускаю из Applescript, он запускается, но ничего не происходит.

Я испробовал всевозможные комбинации для всего, что я могу найти в поиске и других публикациях для использования "python file.py" или "/ usr / bin / python file.py" с "#! / Usr / bin / env python "и" #! / usr / bin / python ".
Если я ввожу «какой питон» в терминал, я получаю «/ usr / bin / python»

Сейчас у меня есть оба сценария с разбивкой по базовым компонентам. В конечном итоге я буду использовать Applescript для передачи пути к файлу в python с помощью sys.argv [1] (именно поэтому я использую Applescript для запуска сценария python), но я пока не зашёл так далеко, как показано ниже. еще не работает.

Applescript

do shell script "/usr/bin/python $HOME/Desktop/test.py"

Python

#!/usr/bin/python

import sys
import os

# The notifier function
def notify(title, subtitle, message):
    t = '-title {!r}'.format(title)
    s = '-subtitle {!r}'.format(subtitle)
    m = '-message {!r}'.format(message)
    os.system('terminal-notifier {}'.format(' '.join([m, t, s])))

# Calling the function
notify(title    = 'Message Test',
       subtitle = 'Test1:',
       message  = 'Test2')

sys.exit(0)

Скрипт python отправляет сообщение уведомителю. Каждый раз, когда я запускаю в терминале, я получаю сообщение без проблем. Каждый раз, когда я запускаю яблочный скрипт как скрипт оболочки, он запускается без ошибок в AS, но от Python не приходит никаких сообщений.

У кого-нибудь есть мысли о том, где я ошибся?

1 Ответ

0 голосов
/ 29 апреля 2019

Работает ли у вас, если вы используете полный путь к двоичному файлу? У меня это работало как в BBEdit, так и в Smile (редактор сценариев). Мой путь:

/Applications/terminal-notifier-2.0.0/terminal-notifier.app/Contents/MacOS/terminal-notifier

Итак, я использовал:

#!/usr/bin/python

import sys
import os

# The notifier function
def notify(title, subtitle, message):
    t = '-title {!r}'.format(title)
    s = '-subtitle {!r}'.format(subtitle)
    m = '-message {!r}'.format(message)
    os.system('/Applications/terminal-notifier-2.0.0/terminal-notifier.app/Contents/MacOS/terminal-notifier {}'.format(' '.join([m, t, s])))

# Calling the function
notify(title    = 'Message Test',
       subtitle = 'Test1:',
       message  = 'Test2')

sys.exit(0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...