Python est un langage de programmation très populaire en raison de certaines caractéristiques souhaitables qu'il possède comme la lisibilité, la facilité d'apprentissage, la flexibilité, etc.
Par conséquent, il est devenu largement adopté dans divers domaines ou aspects de la programmation informatique tels que les scripts, le développement Web, la cybersécurité et l'apprentissage automatique.
Python possède de nombreuses bibliothèques et frameworks qui l'adaptent à l'utilisation dans ces différents domaines, par exemple, Django et Flask sont des frameworks Python utilisés dans le développement Web ; Pandas, Numpy, Scikit-learn, PyTorch, etc. sont utilisés dans l'apprentissage automatique, tandis que les bibliothèques Python comme Scapy, Beautiful Soup et Cryptography sont utilisées dans la cybersécurité.
Un domaine de programmation où Python n'est en fait pas largement utilisé est le développement mobile.
Cela est attribuable au fait que Python est relativement lent à exécuter (par conséquent, les applications Python peuvent avoir des difficultés sur les appareils mobiles avec des spécifications faibles), et également au fait que Python, étant un langage interprété de haut niveau, est loin et peut ne fonctionnent pas bien avec le langage natif des systèmes d'exploitation mobiles (c'est-à-dire Java pour Android et Objective-c/Swift pour iOS), qui sont généralement des langages compilés de niveau intermédiaire.
Cette lacune de Python dans le développement mobile est cependant un problème pour de nombreux programmeurs car Python est fondamentalement le premier langage le plus populaire pour les débutants en programmation, et ils peuvent vouloir se plonger dans le développement mobile qui est devenu très rentable en raison des milliards d'applications mobiles. appareils utilisés dans le monde entier.
De plus, les professionnels de Python qui utilisent déjà le langage pour le développement Web, l'intelligence artificielle ou la cybersécurité peuvent également vouloir convertir leurs logiciels en applications mobiles pour une raison ou une autre.
C'était certainement un problème auquel j'ai été confronté après avoir appris Python et décidé de créer des applications mobiles pour obtenir certains des scripts que j'avais écrits pour les utilisateurs qui pourraient les trouver utiles.
Cependant, bien qu'il ne soit pas populaire d'utiliser Python pour le développement mobile, ce n'est pas impossible. En fait, quelques frameworks et bibliothèques existent pour le développement mobile avec Python, et quelques-uns ont une communauté assez importante.
Certains d'entre eux sont Python-pour-Android, Pymob, PyQT (pyqtdeploy), Kivy, RenPi et Beeware.
Certains de ces frameworks héritent également de la syntaxe conviviale de Python pour le développement de l'interface utilisateur (par exemple, le langage de conception Kivy). Cela fait de Python un langage de développement d'applications mobiles très utile lorsqu'il est utilisé pour de petites applications ou un prototypage rapide.
Cependant, de nombreux problèmes surviennent lorsque vous essayez de compiler ou d'empaqueter une application Python finie pour mobile. C'était du moins mon expérience avec Kivy, et mes recherches ont montré qu'il s'agissait d'un problème courant.
L'une des raisons de ce problème est probablement la fréquence à laquelle les bibliothèques mobiles Python légères n'exploitent pas les ressources de débogage sophistiquées du studio Android dans la mesure où les frameworks populaires tels que Flutter et React Native le font.
Cet article explore plus en détail le développement mobile avec Python en relation avec ce problème de packaging et les meilleures pratiques pour les surmonter.
Kivy : Il s'agit en fait d'un framework Python multiplateforme qui permet aux utilisateurs de créer des applications pour Windows, Mac, Linux, Android et iOS. Kivy utilise un langage de conception propre pour développer une interface utilisateur similaire sur toutes les plates-formes. Il utilise Python pur pour la programmation d'applications et les packages (par exemple, buildozer est utilisé pour déployer le code sur des plates-formes spécifiques).
Pyqtdeploy : cela fournit un ensemble d'outils pour empaqueter des applications ou des bibliothèques CLI et GUI PyQt sur des appareils de bureau et mobiles. Les projets packagés avec cet outil peuvent être commercialisés grâce à sa licence gratuite.
Attention : il s'agit d'un ensemble d'outils pour créer des applications Python, notamment Toga - une boîte à outils pour l'interface utilisateur multiplateforme, Batavia - un gestionnaire Javascript et une mallette pour l'empaquetage d'applications pour mobile et ordinateur de bureau. Les applications Beeware ont une apparence spécifique à la plate-forme.
Alors que le processus de développement est souvent fluide et simple, empaqueter une application Python pour n'importe quelle plate-forme est souvent problématique. En plus du mobile, j'ai également rencontré ce problème lors de la tentative de package d'un fichier exe Python à l'aide de Pyinstaller.
Le problème est encore exacerbé lorsque des bibliothèques python tierces sont utilisées dans l'application.
D'après mon expérience, cette tempête de bugs lors du packaging de l'application se résume à deux raisons majeures :
Les bibliothèques de développement mobile Python prennent peu ou pas en charge le développement d'applications en temps réel avec des émulateurs Android ou des appareils Android.
Les développeurs mobiles qui utilisent Flutter ou réagissent nativement apprécieront à quel point il est utile d'utiliser un appareil virtuel ou physique lors de la création de votre application. Cela aide à découvrir tôt toutes sortes d'erreurs de syntaxe, d'exécution et de compatibilité pour une correction rapide.
Avec les bibliothèques Python, cependant, les développeurs doivent généralement créer l'application sur leur appareil de bureau avant de créer la version APK pour l'appareil mobile.
Cela peut entraîner de nombreux problèmes de compatibilité lorsque les outils Android ou iOS commencent à interagir avec le code de l'application.
Par conséquent, le problème est qu'une application qui a été conçue pour un environnement de bureau est conditionnée pour le mobile.
Cela peut sembler assez évident, mais les développeurs doivent en tenir compte lors de l'empaquetage d'une application mobile Python car le terminal peut ne pas le signaler (comme ce fut le cas pour moi).
Cela peut faire perdre un temps de développement précieux et pourrait même frustrer le développeur au point d'abandonner.
Utilisation de bibliothèques tierces.
Je trouve cela nécessaire de souligner en raison de mon expérience; lorsque j'ai essayé de packager un programme Python, je l'ai créé en tant qu'exécutable Windows.
À ma grande surprise, alors que le programme fonctionnait bien sur le terminal Python, j'ai reçu des plaintes d'incompatibilité de la part des bibliothèques tierces lors de l'empaquetage de l'application.
Cela peut également se produire lors de l'empaquetage d'un programme python en tant qu'application mobile.
Attendez-vous à ce que le terminal ne signale pas toutes les erreurs présentes.
Recherchez la compatibilité des versions des bibliothèques utilisées.
Créez une interface utilisateur dynamique qui peut s'adapter aux appareils mobiles sans provoquer de débordement.
Utilisez toutes les commandes de débogage supplémentaires disponibles pour un rapport d'erreur détaillé.
Utilisez des applications de débogage telles que Logcat Reader pour obtenir des rapports de terminal supplémentaires lorsque votre application s'exécute sur votre appareil mobile.