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
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.
- 1. bridge iOS vs bridge_transfer
- 2. crea playlist iTunes con bridge di scripting
- 3. Aggiungi filmato a iTunes utilizzando Scripting Bridge
- 4. SpiderMonkey vs JavaScriptCore vs?
- 5. - Zsh vs FishShell. Scripting, produttività e poweruser perse
- 6. Ruby vs Lua come linguaggio di scripting per C++
- 7. Python vs Lua per motore di scripting incorporato/elaborazione testo
- 8. Ruby sandboxing vs. integrazione di un linguaggio di scripting
- 9. Sviluppo PyObjC con Xcode 3.2
- 10. ID vs UniqueID vs ClientID vs UniqueClientID vs StaticClientID?
- 11. VS 2008 vs VS 2008 Express
- 12. .NET vs ASP.NET vs CLR vs ASP
- 13. Atomikos vs JOTM vs Bitronix vs?
- 14. Accumulare vs piega vs ridurre vs comprimere
- 15. ACE vs Boost vs Poco vs wxWidgets
- 16. VS 2013 MSTest vs nUnit vs xUnit
- 17. control.BeginInvoke() Vs Dispatcher Vs SynchronizationContext Vs .. - AFFIDABILITÀ
- 18. Exec vs ExecWait vs ExecShell vs nsExec :: Exec vs nsExec :: ExecToLog vs nsExec :: ExecToStack vs ExecDos vs ExeCmd
- 19. bigtable vs cassandra vs simpledb vs dynamo vs couchdb vs hypertable vs riak vs hbase, cosa hanno in comune?
- 20. e vs * e | vs +
- 21. * vs ** vs *** in Proguard?
- 22. bundler vs RVM vs gemme vs RubyGems vs gemsets vs system ruby
- 23. Misurare il tempo in Linux - tempo vs orologio vs getrusage vs clock_gettime vs gettimeofday vs timespec_get?
- 24. innerText vs innerHtml vs label vs text vs textContent vs outerText
- 25. Mathematica: non valutata vs Defer vs attesa vs HoldForm vs HoldAllComplete vs etc etc
- 26. PowerShell Runspace vs DLR
- 27. Iterator vs. Reference vs. pointer
- 28. Selenium vs. SimpleTest vs. WatiN
- 29. BasicHttpBinding vs WsHttpBinding vs webHttpBinding
- 30. Boo vs C# vs Python?
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/ –
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
Siamo spiacenti. Ho trascurato la tua menzione di Appscript. Sono d'accordo con la tua valutazione. –