2012-06-05 10 views
6

Estoy empezando a aprender sobre la integración de las aplicaciones Python y Mac OS. (Quiero llamar a algunos métodos desde Cocoa a Python.) He encontrado estas terminologías: Scripting Bridge, PyObjC y py2app. ¿Cual es la diferencia? ¿Es PyObjC un ejemplo de un puente de scripting? ¿Y cuándo entra en juego py2app?Scripting Bridge vs PyObjC contra py2app

Respuesta

7

La versión corta: PyObjC es la forma en que llamas API de Mac OS X, Scripting Bridge es la forma en que hablas con las interfaces de scripting de otras aplicaciones. Más detalladamente:

PyObjC es un puente entre el lenguaje Python y el tiempo de ejecución de Objective C (y el conjunto de envoltorios de cacao construidos trivialmente en la parte superior de ese puente, y algunas cosas útiles). Si desea llamar a los métodos de Cocoa, utiliza PyObjC, generalmente mediante la importación de Cocoa o Foundation.

Scripting Bridge es un puente entre el lenguaje Python y el sistema de scripting basado en eventos de Apple. Si desea llamar a la interfaz de scripting de otra aplicación, use Scripting Bridge. (En la mayoría de los casos, si usa Scripting Bridge, también querrá importar Foundation, porque Scripting Bridge se ocupa de cosas como NSArrays, etc.)

Por lo tanto, PyObjC no es un ejemplo de un puente de scripting. Un ejemplo de un puente de scripting es, bueno, Scripting Bridge o Appscript (que es mejor, pero no de Apple, y ya no se mantiene).

py2app no ​​tiene mucho que ver con ninguno de estos; es una forma de envolver una aplicación Python, junto con todos los módulos de extensión que requiere, y la mayor cantidad de intérprete de Python que sea necesario, en un único paquete .app que puede distribuir a los usuarios para que puedan hacer doble clic en ejecutarlo. Por supuesto, la mayoría de esas aplicaciones tendrán GUI, y muchas de ellas usarán PyObjC para crear esas GUI directamente en Cocoa (en lugar de usar, por ejemplo, PyQt o wxPython), pero más allá de eso, no hay una conexión real.

+0

Además, dependiendo de las aplicaciones con las que intente integrarse, es posible que 'py-appscript' sea una mejor opción que Scripting Bridge. No se deje intimidar por la advertencia de desaprobación del desarrollador, sigue siendo la mejor interfaz de secuencias de comandos de eventos de Apple, especialmente para aplicaciones con interfaces de scripts funky. http://pypi.python.org/pypi/appscript/ –

+3

Como mencioné anteriormente, Appscript ya no se mantiene. De hecho, ya no está aceptando parches de otras personas. Eventualmente, dejará de funcionar, a menos que alguien más se haga cargo. Dicho esto, todavía lo estoy usando en múltiples aplicaciones, Python y ObjC, y voy a seguir parchándolo yo mismo en lugar de cambiar a Scripting Bridge y tratar de solucionar los problemas con iTunes y Finder ... Pero siempre me siento preocupado sobre recomendarlo a nuevos usuarios. – abarnert

+1

Lo siento. Pasé por alto tu mención de Appscript. Estoy de acuerdo con tu evaluación –

Cuestiones relacionadas