para - Incrustar Python en una aplicación de iPhone
mejores aplicaciones para iphone gratis (3)
He puesto un guión muy difícil en github que recupera y construye python2.6.5 para iPhone y simulador.
http://github.com/cobbal/python-for-iphone
Trabajo en progreso
Actualización algo deprimente casi 2 años después: (copiada de README en github)
Este proyecto nunca realmente ejecutó python en el iPhone a mi entera satisfacción, y no puedo recomendar su uso para ningún proyecto serio en esta etapa.
Lo más notablemente faltante es el soporte pyobjc (que resulta mucho más difícil de exportar al iPhone ya que depende de más código específico de la plataforma)
También falta la capacidad de compilar módulos estáticamente, (todos están construidos actualmente como dylibs que funcionan para el desarrollo, pero que yo sepa no estaría permitido en la App Store)
En este punto, este proyecto está destinado principalmente a ser un punto de partida para cualquier persona más inteligente que yo que quiera y pueda abordar los problemas anteriores.
Realmente desearía que fuera práctico escribir aplicaciones completamente en Python, pero en este punto parece imposible.
Entonces es un nuevo milenio; Apple ha agitado su mano; ahora es legal incluir un intérprete de Python en una aplicación de iPhone (App Store).
¿Cómo hace uno para hacer esto? Toda la discusión existente (como era de esperar) se refiere a jailbreaking. (Pregunta anterior: ¿Puedo escribir aplicaciones nativas de iPhone usando Python )
Mi objetivo aquí no es escribir una aplicación PyObjC, sino escribir una aplicación ObjC regular que ejecute Python como una biblioteca incrustada. El código de Python devolverá la llamada al código de Cocoa nativo. Es el patrón "lógica de control es código Python".
¿Hay alguna guía para incorporar Python en XCode, para que mi aplicación de iPhone pueda vincularlo? Preferiblemente un Python simplificado, ya que no necesitaré el 90% de la biblioteca estándar.
Probablemente pueda descubrir el enhebrado y la API de extensión de Python; Lo he hecho en MacOS. Pero solo usando compiladores de línea de comandos, no XCode.
Realmente no importa cómo construyes Python, no necesitas construirlo en Xcode, por ejemplo, pero lo que importa es el producto de esa construcción.
A saber, necesitará construir algo como libPython.a que pueda vincularse estáticamente a su aplicación. Una vez que tenga una .a, puede agregarla al proyecto de Xcode para su (s) aplicación (es) y, a partir de ahí, se vinculará y firmará igual que el resto de su aplicación.
IIRC (ha pasado un tiempo desde que construí python a mano), el python listo para usar construirá un libPython.a (y muchas otras librerías) si lo configura correctamente.
Por supuesto, su segundo problema será la compilación cruzada de Python para ARM desde su 86 caja. Python es un proyecto basado en autoconf y autoconf es un problema para la compilación cruzada.
Como dices correctamente, hacerlo pequeño será fundamental.
No es sorprendente, tampoco, que no seas la primera persona que quiera hacer esto, pero no para iOS. Python ha sido exprimido en dispositivos mucho menos capaces que aquellos que ejecutan iOS. Encontré un hilo con un montón de enlaces cuando busqué en Google; podría ser útil .
Además, es posible que desee unirse a la lista pyobjc-dev . Si bien no tiene como objetivo una aplicación basada en PyObjC (que, por cierto, es una buena idea, PyObjC tiene un largo camino por recorrer antes de que sea compatible con iOS), la comunidad PyObjC ha estado discutiendo esto y Ronald, de cualquiera, es probablemente la persona más informada en esta área en particular. Tenga en cuenta que PyObjC tendrá que resolver el problema de Python en iOS incrustado antes de portar PyObjC. Su requisito previo es su requisito, por así decirlo.
También comencé un proyecto así. Viene con su propio script de compilación simplificado por lo que no hay necesidad de perder el control con autoconf para obtener su biblioteca estática compilada cruzada. Es capaz de construir una biblioteca estática de Python completamente libre de dependencias con algunos módulos comunes. Debe ser fácilmente extensible.