2010-09-11 97 views
86

因此,这是一个新的千年;苹果已经挥动手;在iPhone(App Store)应用程序中包含Python解释器现在是合法的。将Python嵌入iPhone应用程序

怎么去做这件事?所有现有的讨论(不出所料)都是指越狱。 (老问题:Can I write native iPhone apps using Python

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

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

我大概可以找出线程和Python扩展API;我在MacOS上做到了这一点。但只能使用命令行编译器,而不能使用XCode。

+0

http://itunes.apple.com/us/app/ipython/id485729872?ls=1&mt=8 – chown 2012-01-06 14:33:45

+0

做你能够做到这一点? – Ali 2012-01-22 00:37:21

回答

27

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

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

IIRC(已经有一段时间了,因为我已经手工构建了python)现成的python会构建一个libPython.a(以及其他一些库),如果您正确配置的话。

当然,你的第二个问题是要从你的框中交叉编译python for ARM。 Python是一个基于autoconf的项目,autoconf是一个交叉编译的麻烦。

正如您正确指出的那样,使其变小将至关重要。

也不奇怪,你不是第一个想做这件事的人,但不是iOS的。 Python已经被挤压到那些比运行iOS的设备要少得多的设备上。当用google搜索时,我发现有一串链接,它might be useful

此外,您可能还想加入pyobjc-dev列表。虽然你不是针对基于PyObjC的应用程序(这是一个好主意,PyObjC还有很长的路要走,因为它对iOS友好),但PyObjC社区一直在讨论这个问题,可能是这方面最有见识的人。请注意,在移植PyObjC之前,PyObjC必须解决iOS上的嵌入式Python问题。他们的先决条件就是你的要求。

+0

感谢您的链接。 (我在夏普Zaurus上使用了Python,这个项目的早期版本很多,但那是Python 1.6和其他人的包装......) – 2010-09-11 18:02:13

+4

我曾经将Python移植到索尼的PSP上;也许一些Subversion的历史会帮助你。不完全是答案。这里:http://www.python-psp.net/trac/ – fraca7 2010-11-14 14:19:51

21

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

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

进展中的工作

有点郁闷更新近2年后(从README在github上复制)

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

最值得注意的是缺少的是pyobjc支持(原来是多少 很难移植到iPhone,因为它依赖于更具体的平台 代码)

还缺少的是静态编译模块的所有能力,(在 目前建作为工程的发展,但我 知识不会在App Store中被允许)

此时该项目主要是指对任何人 比我聪明的起点dylibs谁想要并能解决上述问题。

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

+0

谢谢!我几天没有机会看它,但我一定会尽快尝试。 – 2010-09-14 16:46:45

+0

如果'pyobjc'很难编译,使用'ctypes'是否可行?在这种情况下[this](http://stackoverflow.com/a/1490644/288672)的答案可能是一个线索(意识到它只是一个大而痛苦的工作的开始,但仍然)。 – 2012-07-06 10:12:28

9

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

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

+0

我没有让你的compilescript工作。它编译,但缺少一些内置模块,如'集合'。有任何想法吗? – bijan 2012-10-26 10:40:47

+0

我没有包含所有的本地C模块。只需修改它。 – Albert 2012-10-26 13:11:11

+0

似乎日期...只适用于iOS 4.3?你能记录如何让它与更多的当前版本一起工作吗? – ArtOfWarfare 2015-08-16 14:39:38

相关问题