将Pythonembedded到iPhone应用程序中
所以这是一个新的千年; 苹果已经挥了挥手; 在iPhone(App Store)应用程序中包含Python解释器是合法的。
怎么去做这个? 所有现有的讨论(不出所料)都是指越狱。 (老问题: 我可以使用Python编写本机iPhone应用程序 )
我的目标不是编写一个PyObjC应用程序,而是编写一个运行Python的常规ObjC应用程序作为embedded式库。 Python代码然后将callback到本地Cocoa代码。 这是“控制逻辑是Python代码”模式。
有没有一个指导让Python在XCode中build立,以便我的iPhone应用程序可以链接它? 最好是精简的Python,因为我不需要90%的标准库。
我大概可以找出线程和Python扩展API; 我已经在MacOS上完成了。 但只能使用命令行编译器,而不能使用XCode。
关于如何构buildPython并不重要 – 例如,您不需要在Xcode中构build它,但重要的是构build的产品。
也就是说,您将需要构build像libPython.a这样的静态链接到应用程序的东西。 一旦你有了一个.a,它就可以被添加到你的应用程序的Xcode项目中,并且从那里,它将被链接和签名,就像你的应用程序的其余部分一样。
IIRC(已经有一段时间了,因为我已经手工构build了python)现成的python将构build一个libPython.a(以及其他一些库),如果你正确configuration的话。
当然,你的第二个问题将是从你的86盒子交叉编译ARM的Python。 Python是一个基于autoconf的项目,autoconf是一个交叉编译的麻烦。
正如您正确地表示的那样,使其变小将是至关重要的。
不奇怪的是,你不是第一个想要这样做的人,但不是iOS。 Python已经被挤压到比那些运行iOS的设备要less得多的设备上。 当用googlesearch的时候,我发现有一串链接, 这可能是有用的 。
另外,你可能想joinpyobjc-dev列表。 虽然你不是针对一个基于PyObjC的应用程序(这是一个好主意 – PyObjC还有很长的路要走之前,它将是友好的iOS),PyObjC社区一直在讨论这个和任何人的罗纳德,可能是这方面最有见识的人。 请注意,在移植PyObjC之前,PyObjC必须解决iOS上的embedded式Python问题。 他们的先决条件就是你的要求。
我已经把一个非常粗略的脚本放在github上,为iPhone和模拟器提取和构buildpython2.6.5。
http://github.com/cobbal/python-for-iphone
工作正在进行中
近2年后有点令人沮丧:(从github上的README复制)
这个项目从来没有真正让iPhone上的python运行到我的满意,我不能推荐在这个阶段使用它的任何严重的项目。
最值得注意的是缺less的是pyobjc支持(由于它依赖于更多的平台特定的代码,所以很难转到iPhone)
另外还缺less静态编译模块的能力(目前所有的模块都是作为dylib开发的,但据我所知在App Store中是不允许的)
在这一点上,这个项目主要是为了比谁更聪明,谁想要解决上述问题的出发点。
我真的希望完全用Python编写应用程序是可行的,但在这一点上似乎是不可能的。
我也开始了这样一个项目。 它带有自己的简化编译脚本,所以不需要乱用autoconf来获得交叉编译的静态库。 它能够用一些通用模块构build一个完全无依赖的Python静态库。 它应该很容易扩展。