在iPhone应用程序中嵌入Python

时间:2010-09-11 16:02:35

标签: iphone python xcode

所以这是一个新的千年;苹果挥了挥手;现在,在iPhone(App Store)应用程序中包含Python解释器是合法的。

如何做到这一点?所有现有的讨论(不出所料)都指的是越狱。 (旧问题:Can I write native iPhone apps using Python

我的目标不是编写PyObjC应用程序,而是编写一个将Python作为嵌入式库运行的常规ObjC应用程序。然后Python代码将回调本机Cocoa代码。它是“控制逻辑是Python代码”模式。

是否有使用XCode构建Python的指南,以便我的iPhone应用程序可以链接它?最好是一个精简的Python,因为我不需要90%的标准库。

我可以找出线程和Python扩展API;我在MacOS上做过。但只使用命令行编译器,而不是XCode。

3 个答案:

答案 0 :(得分:28)

如何构建Python并不重要 - 例如,您不需要在Xcode中构建它 - 但重要的是该构建的产品。

也就是说,您需要构建类似libPython.a的东西,它可以静态链接到您的应用程序中。一旦你有一个.a,就可以将它添加到你的应用程序的Xcode项目中,从那里,它将被链接和签名,就像你的应用程序的其余部分一样。

IIRC(自从我手工构建python以来已经有一段时间了)开箱即用的python将构建一个libPython.a(以及一堆其他库),如果你正确配置的话。 / p>

当然,你的第二个问题是从 86 框中为ARM交叉编译python。 Python是一个基于autoconf的项目,autoconf是交叉编译的重点。

正如您所说的那样,将其缩小至关重要。

也不奇怪,你不是第一个想要这样做的人,而不是iOS。 Python已被挤入设备中,而不是运行iOS的设备。在google搜索时,我发现了一个带有一堆链接的帖子;它might be useful

此外,您可能想加入pyobjc-dev列表。虽然你没有针对一个基于PyObjC的应用程序(顺便说一下,这是一个好主意 - PyObjC还有很长的路要走,它才会是iOS友好的),PyObjC社区一直在讨论这个和Ronald,任何人,可能是这个特定领域最知识渊博的人。请注意,在移植PyObjC之前,PyObjC必须解决嵌入式Python on iOS问题。他们的先决条件是你的要求,就像它一样。

答案 1 :(得分:21)

我在github上放了一个非常粗略的脚本,为iPhone和模拟器提取和构建python2.6.5。

http://github.com/cobbal/python-for-iphone

正在进行的工作

近两年后有些令人沮丧的更新:(从github上的README复制)

  

这个项目从来没有真正让iPhone上的python运行到我的   满意,我不建议将它用于任何严肃的项目   在这个阶段。

     

最值得注意的是缺少pyobjc支持(结果证明是这样的   更难移植到iPhone,因为它依赖于更具体的平台   代码)

     

缺少的是静态编译模块的能力(都是   目前建造的dylibs用于开发,但对我的   App Store中不允许提供知识)

     

此时此项目主要是作为起点   任何比我更聪明,想要并能解决上述问题的人。

     

我真的希望用Python完全编写应用程序是可行的,但是   在这一点上似乎是不可能的。

答案 2 :(得分:9)

我也开始了这样一个项目。它带有自己的简化编译脚本,因此无需使用autoconf来获取交叉编译的静态库。它能够使用一些通用模块构建一个完全无依赖的静态Python库。它应该易于扩展。

https://github.com/albertz/python-embedded/