Вызов AppleScript из Python без использования osascript или appscript?

Есть ли способ выполнить (и получить результат) код AppleScript из python без использования служебной программы командной строки osascript или appscript (который я действительно не хочу использовать (я думаю?), потому что он больше не разрабатывался/не поддерживался/не рекомендовался)?

Обоснование: в еще один вопрос, который я только что опубликовал, я описываю странное/нежелательное поведение, которое я испытываю при запуске AppleScript через osascript. Поскольку я на самом деле вызываю его из python script, я задавался вопросом, есть ли способ маршрутизировать вокруг osascript вообще, поскольку, похоже, проблема заключается в том, что, но applicationcript (очевидный выбор?) Выглядит рискованным сейчас...

Ответы

Ответ 1

Вы можете использовать мост PyObjC:

>>> from Foundation import *
>>> s = NSAppleScript.alloc().initWithSource_("tell app \"Finder\" to activate")
>>> s.executeAndReturnError_(None)

Ответ 2

PyPI - ваш друг...

http://pypi.python.org/pypi/py-applescript

Пример:

import applescript

scpt = applescript.AppleScript('''
    on run {arg1, arg2}
        say arg1 & " " & arg2
    end run

    on foo()
        return "bar"
    end foo

    on Baz(x, y)
        return x * y
    end bar
''')

print(scpt.run('Hello', 'World')) #-> None
print(scpt.call('foo')) #-> "bar"
print(scpt.call('Baz', 3, 5)) #-> 15