C'est donc un nouveau millénaire; Apple a agité la main; il est désormais légal d'inclure un interpréteur Python dans une application iPhone (App Store).
Comment s'y prend-on? Toutes les discussions existantes (sans surprise) font référence au jailbreaking. (Question plus ancienne: Puis-je écrire des applications iPhone natives en utilisant Python )
Mon objectif ici n'est pas d'écrire une application PyObjC, mais d'écrire une application ObjC standard qui exécute Python en tant que bibliothèque intégrée. Le code Python rappellera ensuite le code Cocoa natif. C'est le modèle «la logique de contrôle est du code Python».
Existe-t-il un guide pour intégrer Python dans XCode, afin que mon application iPhone puisse le lier? De préférence un Python dépouillé, car je n'aurai pas besoin de 90% de la bibliothèque standard.
Je peux probablement comprendre le threading et l'API d'extension Python; Je l'ai fait sur MacOS. Mais en utilisant uniquement des compilateurs de ligne de commande, pas XCode.
Réponses:
La façon dont vous construisez Python n'a pas vraiment d'importance - vous n'avez pas besoin de le construire dans Xcode, par exemple - mais ce qui compte, c'est le produit de cette version.
À savoir, vous allez devoir créer quelque chose comme libPython.a qui peut être lié statiquement à votre application. Une fois que vous avez un .a, qui peut être ajouté au projet Xcode pour vos applications et, à partir de là, il sera lié et signé comme le reste de votre application.
IIRC (cela fait un moment que je n'ai pas construit python à la main), le python prêt à l'emploi construira un libPython.a (et un tas d'autres bibliothèques), si vous le configurez correctement.
Bien sûr, votre deuxième problème sera la compilation croisée de python pour ARM à partir de votre boîte 86 . Python est un projet basé sur autoconf et autoconf est une douleur dans le cul pour la compilation croisée.
Comme vous le dites correctement, il sera essentiel de le rendre petit.
Pas étonnant non plus que vous ne soyez pas la première personne à vouloir faire cela, mais pas pour iOS. Python a été inséré dans des appareils beaucoup moins capables que ceux qui exécutent iOS. J'ai trouvé un fil avec un tas de liens en cherchant sur Google; cela pourrait être utile .
Vous voudrez peut-être également rejoindre la liste pyobjc-dev . Bien que vous ne cibliez pas une application basée sur PyObjC (ce qui, au fait, est une bonne idée - PyObjC a un long chemin à parcourir avant d'être compatible avec iOS), la communauté PyObjC en a discuté et Ronald, de n'importe qui, est probablement la personne la plus compétente dans ce domaine particulier. Notez que PyObjC devra résoudre le problème Python intégré sur iOS avant de porter PyObjC. Leur condition préalable est votre exigence, pour ainsi dire.
la source
J'ai mis un script très approximatif sur github qui récupère et construit python2.6.5 pour iPhone et simulateur.
http://github.com/cobbal/python-for-iphone
Travail en cours
Mise à jour un peu déprimante près de 2 ans plus tard: (copié de README sur github)
la source
pyobjc
est difficile à compiler, est-il faisable à utiliserctypes
? Dans ce cas, cette réponse pourrait être un indice (se rendre compte que ce ne serait que le début d'un travail important et douloureux, mais quand même).J'ai également lancé un tel projet. Il est livré avec son propre script de compilation simplifié, il n'est donc pas nécessaire de jouer avec autoconf pour obtenir votre bibliothèque statique compilée de manière croisée. Il est capable de créer une bibliothèque statique de Python totalement sans dépendance avec quelques modules communs. Il doit être facilement extensible.
https://github.com/albertz/python-embedded/
la source