Scripting Bridge vs PyObjC vs py2app

jan*_*neh 6 python cocoa py2app scripting-bridge

我刚刚开始学习如何集成Python和Mac OS应用程序.(我想调用从Cocoa到Python的一些方法.)我遇到了这些术语 - 脚本桥,PyObjC和py2app.有什么不同?PyObjC是脚本桥的一个例子吗?py2app什么时候开始发挥作用?

aba*_*ert 7

简短版本:PyObjC是您调用Mac OS X API的方式,Scripting Bridge是您与其他应用程序的脚本界面交谈的方式.更详细:

PyObjC是Python语言和Objective C运行时之间的桥梁(以及在该桥之上简单构建的Cocoa包装器集,以及一些非常方便的东西).如果要调用Cocoa方法,可以使用PyObjC,通常是通过导入Cocoa或Foundation.

Scripting Bridge是Python语言和基于Apple Event的脚本系统之间的桥梁.如果要调用另一个应用程序的脚本界面,可以使用Scripting Bridge.(在大多数情况下,如果您使用Scripting Bridge,您还需要导入Foundation,因为Scripting Bridge会处理NSArrays之类的事情等)

因此,PyObjC不是脚本桥的一个例子.脚本桥的一个例子是Scripting Bridge,或者是Appscript(它更好,但不是来自Apple,不再维护).

py2app与其中任何一个都没有多大关系; 这是一种将Python应用程序及其所需的所有扩展模块以及必要的Python解释器包装成单个.app包的方法,您可以将其分发给用户,以便他们只需双击即可运行.当然,大多数此类应用程序都有GUI,其中许多将使用PyObjC直接在Cocoa中创建这些GUI(而不是使用,例如,PyQt或wxPython),但除此之外,没有真正的连接.

  • 正如我上面提到的,不再维护Appscript.事实上,甚至不再接受其他人的补丁了.最终,它将停止工作,除非其他人接管它.话虽这么说,我仍然在多个应用程序中使用它,包括Python和ObjC,我会自己修补它而不是切换到Scripting Bridge并尝试解决iTunes和Finder的问题...但我总是感到担心关于向新用户推荐它. (3认同)