En utilisant PyObjC , vous pouvez utiliser Python pour écrire des applications Cocoa pour OS X. Puis-je écrire des applications iPhone natives en utilisant Python et si oui, comment?
En utilisant PyObjC , vous pouvez utiliser Python pour écrire des applications Cocoa pour OS X. Puis-je écrire des applications iPhone natives en utilisant Python et si oui, comment?
Réponses:
Pas actuellement, les seuls langages actuellement disponibles pour accéder au SDK iPhone sont C / C ++, Objective C et Swift.
Il n'y a aucune raison technique pour laquelle cela ne pourrait pas changer à l'avenir, mais je ne retiendrais pas votre souffle pour que cela se produise à court terme.
Cela dit, Objective-C et Swift ne sont vraiment pas trop effrayants ...
2016 Modifier
Javascript avec le framework NativeScript est maintenant disponible.
Vous pouvez également utiliser PyObjC sur l'iPhone, grâce à l'excellent travail de Jay Freeman (saurik). Voir Applications iPhone en Python .
Notez que cela nécessite un iPhone jailbreaké pour le moment.
Il semble que c'est maintenant quelque chose que les développeurs sont autorisés à faire: le contrat de développeur iOS a été modifié hier et semble avoir été modifié de manière à rendre légal l'intégration d'un interpréteur Python dans votre application:
SECTION 3.3.2 - INTERPRÈTES
Vieux:
3.3.2 Une Application ne peut pas elle-même installer ou lancer un autre code exécutable par quelque moyen que ce soit, y compris sans limitation par l'utilisation d'une architecture de plug-in, en appelant d'autres frameworks, d'autres API ou autrement. Sauf approbation écrite contraire d'Apple, aucun code interprété ne peut être téléchargé ou utilisé dans une application, à l'exception du code qui est interprété et exécuté par les API documentées d'Apple et les interpréteurs intégrés. Nonobstant ce qui précède, avec le consentement écrit préalable d'Apple, une Application peut utiliser du code interprété intégré de manière limitée si une telle utilisation est uniquement destinée à fournir des fonctionnalités mineures ou des fonctionnalités compatibles avec l'objectif prévu et annoncé de l'Application.
Nouveau:
3.3.2 Une application ne peut pas télécharger ni installer de code exécutable. Le code interprété ne peut être utilisé dans une application que si tous les scripts, codes et interpréteurs sont intégrés dans l'application et non téléchargés. La seule exception à ce qui précède concerne les scripts et le code téléchargés et exécutés par le framework WebKit intégré d'Apple.
Oui, vous pouvez. Vous écrivez votre code en tinypy (qui est restreint en Python), puis utilisez tinypy pour le convertir en C ++, et enfin compilez-le avec XCode dans une application iPhone native. Phil Hassey a publié un jeu appelé Elephants! en utilisant cette approche. Voici plus de détails,
http://www.philhassey.com/blog/2009/12/23/elephants-is-free-on-the-app-store/
Oui, de nos jours, vous pouvez développer des applications pour iOS en Python.
Il existe deux frameworks que vous voudrez peut-être vérifier : Kivy et PyMob .
Veuillez également considérer les réponses à cette question , car elles sont plus à jour que celle-ci.
Une mise à jour du contrat de développeur iOS signifie que vous pouvez utiliser ce que vous voulez, à condition de respecter les directives du développeur. La section 3.3.1, qui limitait ce que les développeurs pouvaient utiliser pour le développement iOS, a été entièrement supprimée.
Source: http://daringfireball.net/2010/09/app_store_guidelines
Pythonista dispose d'une fonctionnalité d'exportation vers Xcode qui vous permet d'exporter vos scripts Python en tant que projets Xcode qui créent des applications iOS autonomes.
https://github.com/ColdGrub1384/Pyto vaut également la peine d'être examiné.
L'accord du SDK iPhone est également assez vague quant à savoir si vous êtes même autorisé à exécuter des langages de script (en dehors du Javascript d'une WebView). Ma lecture est que c'est OK - tant qu'aucun des scripts que vous exécutez n'est téléchargé à partir du réseau (donc les scripts pré-installés et modifiés par l'utilisateur semblent être OK).
IANAL etc. etc.
Mise à jour 2019:
Alors que le développement Python-iOS est relativement immature et empêchera probablement (afaik) votre application d'avoir une interface utilisateur native et des fonctionnalités qui pourraient être obtenues dans un langage de développement pris en charge par Apple, Apple semble maintenant autoriser l'intégration d'interpréteurs Python dans Native Swift / Obj-C applications.
Cela prend en charge l'importation de bibliothèques Python et l'exécution de scripts Python (même avec les arguments de ligne de commande fournis) directement à partir de votre code Swift / Obj-C natif.
Mon entreprise enveloppe actuellement notre infrastructure (initialement écrite en Python) dans une application iOS native! Cela fonctionne très bien et la communication entre les pièces peut être facilement réalisée via un modèle client-serveur.
Voici une belle bibliothèque de Beeware avec un modèle de cookiecutter si vous voulez essayer d'exécuter des scripts Python dans votre application iOS: https://github.com/beeware/Python-Apple-support/tree/3.6 .
Techniquement, tant que le code interprété N'EST PAS téléchargé (hors JavaScript), l'application peut être approuvée. C'est exactement ce que fait le framework Rhomobiles "Rhodes", regroupant Ruby mobile, une version légère de Rails, et votre application pour la distribution via l'App-Store. Parce que l'interpréteur et le code interprété sont intégrés dans l'application finale - Apple ne le trouve pas répréhensible.
http://rhomobile.com/products/rhodes/
Même après le dernier communiqué de presse Apple - les applications rhodes (mobile ruby) sont toujours viables sur l'App-Store. J'aurais du mal à croire que tinyPy ou pyObjC ne trouveraient pas de place s'il y avait une communauté de développeurs consentante.
Vous pouvez le faire avec PyObjC, avec un téléphone jailbreaké bien sûr. Mais si vous souhaitez l'introduire dans l'App Store, ils ne le permettront pas car il «interprète le code». Cependant, vous pourrez peut-être utiliser Shed Skin , même si je ne connais personne qui fasse cela. Cependant, je ne vois aucune bonne raison de le faire, car vous perdez le typage dynamique et pourriez aussi bien utiliser ObjC.
Le seul langage "externe" significatif pour le développement iPhone que je connaisse avec un support semi-significatif en termes de frameworks et de compatibilité est MonoTouch , un environnement C # / .NET pour le développement sur iPhone.
Je pense que ce n'était pas possible plus tôt mais j'ai récemment entendu parler de PyMob, ce qui semble intéressant car les applications sont écrites en Python et les sorties finales sont des codes sources natifs dans diverses plates-formes (Obj-C pour iOS, Java pour Android, etc.). C'est certainement tout à fait unique. Ce page Web l'explique plus en détail.
Je n'ai pas encore essayé, mais j'y jetterai bientôt un œil.