2012-06-05 13 views
6

Sto appena iniziando a conoscere l'integrazione di applicazioni Python e Mac OS. (Voglio chiamare alcuni metodi da Cocoa a Python.) Mi sono imbattuto in queste terminologie: Scripting Bridge, PyObjC e py2app. Qual è la differenza? PyObjC è un esempio di bridge di scripting? E quando entra in gioco py2app?Scripting Bridge vs PyObjC vs py2app

risposta

7

La versione breve: PyObjC è il modo in cui si chiamano le API di Mac OS X, Scripting Bridge è il modo in cui si parla alle interfacce di scripting di altre app. Più in dettaglio:

PyObjC è un ponte tra il linguaggio Python e il runtime Objective C (e il set di wrapper Cocoa costruiti banalmente in cima a quel ponte, e alcune belle cose di convenienza). Se si desidera chiamare i metodi Cocoa, si utilizza PyObjC, in genere importando Cocoa o Foundation.

Scripting Bridge è un ponte tra il linguaggio Python e il sistema di script basato su eventi Apple. Se si desidera chiamare l'interfaccia di scripting di un'altra app, si utilizza Scripting Bridge. (Nella maggior parte dei casi, se si utilizza Scripting Bridge, si desidera importare anche Foundation, perché Scripting Bridge tratta cose come NSArrays, ecc.)

Quindi PyObjC non è un esempio di bridge di script. Un esempio di bridge di scripting è, beh, Scripting Bridge o Appscript (che è meglio, ma non da Apple, e non viene più mantenuto).

py2app non ha nulla a che fare con nessuno di questi; è un modo per concludere un'applicazione Python, insieme a tutti i moduli di estensione necessari e all'intero interprete Python se necessario, in un unico pacchetto .app che è possibile distribuire agli utenti in modo che possano semplicemente fare doppio clic su eseguirlo. Naturalmente la maggior parte di queste app avrà GUI e molti di loro useranno PyObjC per creare tali GUI direttamente in Cocoa (piuttosto che usare, ad esempio, PyQt o wxPython), ma oltre a ciò, non c'è una vera connessione.

+0

Inoltre, a seconda delle app con cui si sta cercando di integrarsi, è possibile che 'py-appscript' sia una scelta migliore rispetto a Scripting Bridge. Non lasciatevi scoraggiare dalla dichiarazione di non responsabilità relativa alla deprecazione dello sviluppatore, è ancora la migliore interfaccia di scripting di Apple Event, in particolare per le app con interfacce di scripting funky. http://pypi.python.org/pypi/appscript/ –

+3

Come accennato in precedenza, Appscript non viene più mantenuto. In effetti, non ha più nemmeno accettato patch da altre persone. Alla fine, smetterà di funzionare, a meno che qualcun altro non lo prenda. Detto questo, lo sto ancora utilizzando in più app, sia Python che ObjC, e continuerò a correggerlo io stesso piuttosto che passare a Scripting Bridge e cercare di aggirare i problemi con iTunes e Finder ... Ma mi sento sempre preoccupato su come raccomandarlo ai nuovi utenti. – abarnert

+1

Siamo spiacenti. Ho trascurato la tua menzione di Appscript. Sono d'accordo con la tua valutazione. –

Problemi correlati