Мост сценариев против PyObjC против py2app

Я только начинаю изучать интеграцию приложений Python и Mac OS. (Я хочу вызвать некоторые методы из Cocoa в Python.) Я столкнулся с этими терминами — Scripting Bridge, PyObjC и py2app. Какая разница? Является ли PyObjC примером моста сценариев? И когда py2app вступает в игру?


person janeh    schedule 05.06.2012    source источник


Ответы (1)


Краткая версия: PyObjC — это то, как вы вызываете API-интерфейсы Mac OS X, Scripting Bridge — это то, как вы общаетесь с интерфейсами сценариев других приложений. Более подробно:

PyObjC — это мост между языком Python и средой выполнения Objective C (и набор оболочек Cocoa, тривиально построенных поверх этого моста, и некоторые приятные удобства). Если вы хотите вызывать методы Cocoa, вы используете PyObjC, обычно импортируя либо Cocoa, либо Foundation.

Scripting Bridge — это мост между языком Python и системой сценариев Apple, основанной на событиях. Если вы хотите вызвать интерфейс сценариев другого приложения, вы используете Scripting Bridge. (В большинстве случаев, если вы используете Scripting Bridge, вы также захотите импортировать Foundation, потому что Scripting Bridge работает с такими вещами, как NSArrays и т. д.)

Итак, PyObjC не является примером скриптового моста. Примером скриптового моста является, ну, Scripting Bridge или Appscript (который лучше, но не от Apple и больше не поддерживается).

py2app не имеет ничего общего ни с одним из них; это способ упаковать приложение Python вместе со всеми необходимыми ему модулями расширения и столько интерпретатора Python, сколько необходимо, в единый пакет .app, который вы можете распространять среди пользователей, чтобы они могли просто дважды щелкнуть, чтобы запустить его. Конечно, большинство таких приложений будут иметь графический интерфейс, и многие из них будут использовать PyObjC для создания этих графических интерфейсов непосредственно в Cocoa (вместо использования, например, PyQt или wxPython), но помимо этого реальной связи нет.

person abarnert    schedule 05.06.2012
comment
Кроме того, в зависимости от того, с какими приложениями вы пытаетесь интегрироваться, вы можете найти py-appscript лучший выбор, чем Scripting Bridge. Не пугайтесь заявления разработчика об устаревании, это по-прежнему лучший интерфейс сценариев Apple Event, особенно для приложений с причудливыми интерфейсами сценариев. pypi.python.org/pypi/appscript - person Ned Deily; 05.06.2012
comment
Как я упоминал выше, Appscript больше не поддерживается. На самом деле, он даже больше не принимает патчи от других людей. В конце концов, он перестанет работать, если его не возьмет на себя кто-то другой. При этом я все еще использую его в нескольких приложениях, как Python, так и ObjC, и я буду продолжать исправлять его самостоятельно, а не переключаться на Scripting Bridge и пытаться обойти проблемы с iTunes и Finder… Но я всегда беспокоюсь о рекомендации его новым пользователям. - person abarnert; 05.06.2012
comment
Извини. Я пропустил ваше упоминание об Appscript. Я согласен с вашей оценкой. - person Ned Deily; 05.06.2012
comment
Другой альтернативой является использование комбинации Python (с PyObjC) и AppleScript (с AppleScriptObjC). Раздражает необходимость использовать два языка для связи через разные мосты с исполняющей средой, которая чужда обоим… но, с другой стороны, Apple по-прежнему поддерживает его, и у него нет всех ужасных проблем ScriptingBridge. - person abarnert; 07.06.2012