4

可能重复:
从 Objective-C 调用 Python

我是一名长期的 Python 程序员和短期的 Cocoa 程序员。我刚刚开始使用 PyObjC,完成工作如此简单真是令人惊讶。也就是说,我想尝试将纯 ObjC 用于带有 PyObjC 模型的控制器。我可能会喜欢让 Python 成为 Python 而 Objective-C 成为 Objective-C。无论如何,我认为值得一试。

除了我无法弄清楚或找到有关如何从 Objective-C 调用 Python 的任何信息,只能反过来。有人可以指点我这方面的任何资源吗?(也许它在 PyObjC 网站上,但我只是不知道我在找什么?)

编辑:在基本层面上,我最感兴趣的是能够调用 Python 模块并获取一些本机 ObjC 数据类型。

4

2 回答 2

3

有几种可能的方法。最诱人的是使用 py2app 从你的 python 代码编译一个可加载的包,你可以从中使用NSBundle. 不幸的是,这个用例并没有得到 py2app 开发人员的喜爱,我在 10.5 和 10.6 中发现了几个错误,包括将数据从 python 传回 Objective-C 时相当严重的内存泄漏。我不建议此时使用 py2app。

第二种方法是反转嵌入。编写一个 Python 可可应用程序并在启动时从包中加载您的 Objective-C 代码(甚至在 main() 中)。如果你已经有一个大型的 Objective-C 应用程序,这可能需要一些工作。我知道的唯一缺点是您将无法在 Objective-C 代码中使用 GC,但这确实是使用 PyObjC 的普遍限制。

最后,你可以在你的 Objective-C 代码中实例化一个 python 解释器来加载你的 python 代码。这显然涉及更多,但如果您已经有一个大型的 Objective-C 代码库来注入您的 python 代码,这可能是最好的选择。Xcode 中 Python-Cococa 应用程序模板中的 main.m 文件是一个很好的起点,可以开始看到它的实际效果。

于 2009-11-06T17:37:19.883 回答
0

哎呀,我想我应该搜索更多:

从 Objective-C 调用 Python

于 2009-11-06T17:36:44.067 回答