2012-06-05 2 views
6

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

ответ

7

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

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

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

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

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

+0

Кроме того, в зависимости от того, с какими приложениями вы пытаетесь интегрироваться, вы можете найти «py-appscript» лучшим выбором, чем Scripting Bridge. Не отвлекайтесь на отказ от устаревания разработчика, он по-прежнему является лучшим интерфейсом сценариев Apple Event, особенно для приложений с фанковыми интерфейсами сценариев. http://pypi.python.org/pypi/appscript/ –

+3

Как уже упоминалось выше, Appscript больше не поддерживается. Фактически, он даже не принимает патчи от других людей. В конце концов, он перестанет работать, если кто-то еще не справится с этим. При этом я все еще использую его в нескольких приложениях, как Python, так и ObjC, и я буду исправлять его сам, а не переключиться на Scripting Bridge и попытаться обойти проблемы с iTunes и Finder ... Но я всегда чувствую беспокойство о рекомендациях для новых пользователей. – abarnert

+1

Извините. Я забыл ваше упоминание о приложении. Я согласен с вашей оценкой. –

Смежные вопросы