FAQ
Questions fréquentes
À propos du démarrage et de la récupération, de l’édition et de l’exécution du code, des bibliothèques et extensions, du transfert de fichiers, des modèles et de l’assistant IA, des achats et de leur restauration.
Démarrage et récupération
Que faire si Pythona plante dès son ouverture ?
Essayez le démarrage sécurisé : maintenez le doigt sur l’icône de Pythona sur l’écran d’accueil, puis choisissez « Démarrage sécurisé ».
Un plantage au démarrage peut être lié à la restauration des fichiers ou dossiers précédemment ouverts. Le démarrage sécurisé réinitialise les informations enregistrées sur les onglets ouverts et le dernier dossier, puis ouvre un éditeur vide et le dossier Documents local. Vos fichiers de script sont conservés.
Une fois l’app ouverte, ouvrez un à un les dossiers et fichiers que vous utilisiez pour vérifier si le problème est lié à un fichier ou à un emplacement particulier. Si l’ouverture d’un fichier provoque un nouveau plantage et que la « Coloration sémantique » est activée, effectuez à nouveau un démarrage sécurisé, désactivez « Coloration sémantique » dans « Réglages → Thème », puis réessayez.
Que faire si un script d’exemple ne fonctionne plus après une mise à jour ?
Les mises à jour de l’app ne remplacent pas automatiquement les scripts d’exemple enregistrés. Si un exemple ne fonctionne plus après une mise à jour, restaurez les exemples fournis avec la version actuelle de l’app, puis réessayez.
Sauvegardez d’abord les exemples que vous avez modifiés, puis choisissez « Réglages → Restaurer les scripts d'exemple ». Les fichiers d’exemple portant le même nom dans le dossier examples seront écrasés.
La restauration des exemples ne réinitialise pas les paquets Python installés. Si un conflit de versions de dépendances persiste, vérifiez les versions des paquets indiqués dans le message d’erreur.
En savoir plus sur les conflits de dépendancesÉdition et exécution
Que faire si l’app plante pendant la saisie de code ?
Des plantages répétés pendant la saisie de code dans l’éditeur peuvent être liés à la complétion de code. Désactivez « Afficher les suggestions automatiquement » dans « Réglages → Complétion de code », puis réessayez de saisir du code dans le même fichier pour voir si le problème persiste.
Lors du signalement, joignez l’extrait de code concerné, les étapes exactes de saisie et indiquez si le plantage se produit encore lorsque « Afficher les suggestions automatiquement » est désactivé.
Pourquoi le bouton « Arrêter » n’arrête-t-il pas l’exécution immédiatement ?
Le bouton « Arrêter » demande une interruption, mais ne peut pas interrompre toutes les opérations immédiatement. Les appels à time.sleep(), les attentes d’une réponse réseau ou d’un verrou et certains calculs de bibliothèques natives doivent se terminer avant que l’exécution puisse s’arrêter. L’importation d’un module doit également se terminer avant l’arrêt.
Si l’exécution ne s’arrête toujours pas après un certain temps, enregistrez vos fichiers, fermez Pythona depuis le sélecteur d’apps d’iOS, puis rouvrez l’app.
Pourquoi l’app se ferme-t-elle pendant l’exécution d’un script ?
Fonctions de sortie
Si un script termine son exécution avec quit(), exit() ou sys.exit(), Pythona ferme toute l’app par défaut.
Dans « Réglages → quit() / exit() », remplacez « Quitter Pythona » par « Terminer uniquement l’exécution actuelle ». Seule l’exécution en cours se terminera et l’app restera ouverte.
Mémoire insuffisante
Lors du traitement de grands tableaux ou de l’exécution de modèles volumineux, une utilisation excessive de la mémoire peut amener iOS à fermer directement l’app, sans forcément afficher d’erreur Python. Le réglage « quit() / exit() » n’a aucun effet sur ce type de fermeture. Essayez de réduire la quantité de données ou la taille du modèle, ou de traiter les données par lots.
Threads et UIKit
Dans Pythona, les scripts Python s’exécutent par défaut sur un thread d’arrière-plan. Lorsque vous appelez UIKit via ctypes ou rubicon-objc, les opérations comme la création ou la mise à jour de l’interface doivent s’exécuter sur le thread principal d’iOS (thread de l’interface utilisateur), faute de quoi l’app peut planter.
Vous pouvez regrouper ces opérations dans une fonction et la transmettre à la fonction intégrée run_on_ui(...) pour l’exécuter de façon asynchrone sur le thread principal, ou les soumettre directement à la file principale via GCD. L’exemple WKWebView inclus dans l’app montre comment utiliser run_on_ui.
Si le problème se répète, joignez à votre signalement le code et les étapes permettant de le reproduire.
Comment terminer la saisie et envoyer EOF ?
Pendant l’exécution d’un script, choisissez « Envoyer EOF » dans le menu d’édition du champ de saisie de la console, ou appuyez sur Ctrl+D avec un clavier externe. Le texte du champ est envoyé avant de terminer la saisie pour l’exécution en cours.
Comment passer des arguments à un script ?
Maintenez le bouton d’exécution de l’éditeur enfoncé, puis choisissez « Exécuter avec des arguments... ». Les arguments sont transmis au script via sys.argv[1:]. L’option « Modifier les configurations d’exécution... » du même menu permet d’enregistrer les arguments courants et de définir une configuration par défaut.
Comment exécuter un script depuis l’app Raccourcis ?
Touchez le nom du fichier en haut de l’éditeur, choisissez « Raccourcis », puis copiez le « Chemin du script ». Dans l’app Raccourcis, ajoutez l’action Pythona « Exécuter le script Python » et renseignez le chemin. Vous pouvez ajouter des arguments si nécessaire et transmettre la sortie texte renvoyée par l’action aux actions suivantes.
Comment lancer un script d’un simple toucher depuis l’écran d’accueil ?
Ouvrez le script dans Pythona, touchez le nom du fichier en haut de l’éditeur, choisissez « Raccourcis », puis copiez l’« URL ».
Dans l’app Raccourcis, créez un raccourci, ajoutez l’action « Ouvrir les URL » et collez l’URL copiée.
Ouvrez les « Détails » du raccourci et choisissez « Sur l’écran d’accueil ». Définissez le nom et l’icône, puis touchez « Ajouter ».
Il suffira ensuite de toucher l’icône sur l’écran d’accueil pour ouvrir Pythona et exécuter le script.
Voir les instructions d’Apple pour l’écran d’accueilBibliothèques et extensions
Pourquoi certaines bibliothèques tierces ne s’installent-elles pas ?
Le Gestionnaire de paquets installe les bibliothèques tierces distribuées sous forme de wheels en Python pur. Certaines bibliothèques ne proposent que du code source ou nécessitent des extensions compilées en C, C++, Rust ou dans d’autres langages. Elles ne peuvent donc pas être installées directement comme sur un ordinateur. Les bibliothèques natives comme NumPy et SciPy sont précompilées et incluses dans l’app.
Même les bibliothèques en Python pur doivent être compatibles avec Python 3.14 et iOS. Elles peuvent ne pas fonctionner si elles dépendent de fonctions système indisponibles dans cet environnement.
Voir les principales bibliothèques inclusesPourquoi l’installation d’un paquet change-t-elle les versions de ses dépendances ou signale-t-elle un conflit ?
Tous les projets partagent l’environnement des paquets utilisateur de l’appareil. L’installation réutilise les dépendances existantes qui satisfont les exigences ; sinon, elle peut remplacer les dépendances en Python pur installées par l’utilisateur par une version plus récente ou plus ancienne. Les paquets inclus dans l’app ne sont pas remplacés automatiquement.
Avant de changer une version, le programme d’installation vérifie les dépendances concernées déclarées par les autres paquets installés. Il s’arrête et en explique la raison s’il trouve un conflit ou une exigence qu’il ne peut pas traiter. Il n’essaie pas toutes les combinaisons de versions et ne peut pas détecter tous les problèmes de compatibilité.
Vous pouvez préciser des versions compatibles, désinstaller les paquets en conflit devenus inutiles puis réessayer, ou écrire vos propres scripts Python pour télécharger et déployer des paquets en Python pur et gérer leurs dépendances. Les appels à pythona.packages.install() suivent toujours ces règles ; l’installation manuelle reste elle aussi soumise aux limites de compatibilité de Python et d’iOS. Redémarrez Pythona après avoir remplacé un paquet déjà importé.
Les bibliothèques installées sont-elles synchronisées via iCloud ?
Non. Les bibliothèques installées avec le Gestionnaire de paquets sont stockées localement sur l’appareil. Les scripts du stockage local, d’iCloud et des dossiers externes utilisent ces mêmes bibliothèques.
Après avoir synchronisé un projet via iCloud, vous devez installer séparément ses dépendances sur l’autre appareil.
Quelles bibliothèques permettent d’utiliser les fonctions d’iOS dans Pythona ?
Pythona intègre cocoa-py, avec scene pour les jeux, les animations et les graphismes interactifs. photos permet de choisir des photos et des vidéos via le sélecteur système ou de les enregistrer dans la photothèque. audio propose la lecture, l’enregistrement et les effets audio ; coreml charge des modèles Core ML et exécute l’inférence sur l’appareil.
Le paquet pythona permet d’utiliser les fonctions de l’app : pythona.packages sert à installer des paquets tiers, et pythona.ai à créer, consulter et mettre à jour les configurations de fournisseurs d’IA personnalisés.
Pour accéder à d’autres fonctions système d’iOS, nous recommandons rubicon-objc afin d’appeler les API natives d’iOS depuis Python, notamment UIKit pour créer des interfaces natives. Vous trouverez dans l’app des exemples pour obtenir des informations sur l’appareil et utiliser WKWebView.
cocoa-py est open source et prend aussi en charge macOS ; les fonctionnalités disponibles varient selon la plateforme. Le code source et la documentation de l’API sont sur GitHub. Les issues et les pull requests sont les bienvenues.
Consulter le code source et la documentation de cocoa-pyQue choisir pour créer des jeux ou des interfaces graphiques ?
Pour les jeux 2D, les animations et la lecture audio, nous recommandons pygame (l’app intègre pygame-ce). pygame.mixer peut lire de la musique ou des effets sonores sans créer de fenêtre.
Vous pouvez créer des interfaces ou des jeux web avec HTML, CSS et JavaScript, puis les afficher dans Pythona avec WKWebView. Le contenu web se réutilise facilement sur plusieurs plateformes. Pour passer à une autre plateforme, il faudra adapter le code d’affichage dans WKWebView et celui qui relie la page à Python ou aux fonctions d’iOS.
Pour une interface native iOS, vous pouvez appeler UIKit via rubicon-objc. Le code utilisant UIKit reste dépendant d’iOS.
Pythona prend aussi en charge Tkinter pour exécuter des scripts Tkinter existants ou créer des outils simples. L’interface conserve un style de bureau traditionnel. Si vous privilégiez l’apparence et les interactions sur mobile, nous recommandons une interface web ou UIKit via rubicon-objc. Des exemples sont disponibles dans l’app.
Fichiers
Comment échanger des fichiers avec un ordinateur ?
Pour les projets de code, nous recommandons Git : clonez le même dépôt distant dans Pythona et sur votre ordinateur. Après vos modifications, créez un commit et poussez-le vers le dépôt distant, puis récupérez les mises à jour sur l’autre appareil avec un pull.
Vous pouvez aussi synchroniser les fichiers via iCloud Drive ou les exporter avec la fonction de partage du système. Pour les échanges avec un Mac, AirDrop est également disponible.
Vous pouvez activer le « Serveur de fichiers » dans l’app, puis ouvrir l’adresse affichée dans un navigateur sur un ordinateur connecté au même réseau local, afin d’envoyer ou de télécharger des fichiers. Le serveur n’a pas de mot de passe de connexion. Utilisez-le sur un réseau de confiance et arrêtez-le une fois le transfert terminé.
IA
Quels modèles d’IA locaux puis-je utiliser en Python ?
MLX : l’app inclut MLX, utilisable avec mlx-lm pour exécuter des modèles de langage compatibles. Consultez examples/llm_demo.py dans l’app. À la première exécution, ce script installe les dépendances via Internet et télécharge un modèle depuis Hugging Face. Votre appareil doit prendre en charge MLX et disposer de suffisamment de mémoire. La vitesse d’exécution et la taille des modèles utilisables dépendent des performances et de la mémoire de l’appareil.
Apple Foundation Models : le SDK apple-fm-sdk inclus permet d’appeler le modèle d’Apple sur l’appareil. Importez-le en Python avec import apple_fm_sdk. Il faut iOS / iPadOS 26 ou une version ultérieure, un appareil compatible avec Apple Intelligence activé et un modèle système prêt à l’emploi. La disponibilité dépend aussi de la langue et de la région. Consultez la documentation ci-dessous pour utiliser l’API.
Dans les deux cas, l’inférence du modèle s’effectue sur l’appareil. Le téléchargement des dépendances et des modèles nécessite une connexion Internet. Les scripts ou les outils de l’assistant qui utilisent des services en ligne accèdent également au réseau.
Consulter l’utilisation du SDK Python Foundation ModelsComment connecter un modèle local à l’assistant IA ?
Le projet open source Pythona AI Setup permet de créer des configurations pour Apple Foundation Models ou des modèles MLX locaux dans l’assistant IA.
Clonez le projet dans Pythona et exécutez main.py à la racine du projet. Suivez les indications de la page pour choisir un modèle et des outils, puis ajouter la configuration. Sélectionnez ensuite la connexion correspondante dans les réglages de l’assistant IA. Les étapes détaillées figurent dans le README du projet.
Un modèle MLX doit prendre en charge les appels d’outils pour utiliser les fonctions de l’assistant telles que la lecture et l’écriture de fichiers ou l’exécution de Python. Les modèles sans cette prise en charge peuvent servir à la conversation si tous les outils sont désactivés.
Consulter Pythona AI Setup et son mode d’emploiQuels fichiers l’assistant IA peut-il lire et écrire ?
L’assistant IA utilise l’espace de travail de la conversation en cours comme dossier de projet par défaut. Avant d’envoyer le premier message d’une nouvelle conversation, vous pouvez choisir un dossier avec « Changer d'espace de travail ». Changer de dossier dans le navigateur de fichiers ne modifie pas l’espace de travail d’une conversation existante.
L’assistant IA peut également appeler run_python pour exécuter du code Python et lire des fichiers et dossiers dans l’app, y compris en dehors de l’espace de travail. Cet accès n’est pas limité à l’espace de travail sélectionné.
L’assistant IA prend-il en charge AGENTS.md ?
Oui. Créez un fichier AGENTS.md à la racine de l’espace de travail de la conversation en cours pour y préciser la description du projet, le style de code et les autres consignes de collaboration.
L’assistant lit automatiquement ce fichier à chaque nouveau message traité. Une fois vos modifications enregistrées, elles prennent effet au prochain message envoyé. Seul le fichier AGENTS.md à la racine de l’espace de travail est chargé automatiquement ; les fichiers du même nom dans les sous-dossiers ne sont pas fusionnés automatiquement.
À quoi sert un fournisseur personnalisé (JS Provider) ?
Un fournisseur personnalisé permet de définir en JavaScript la manière de se connecter aux services d’IA. Vous pouvez ainsi utiliser des API, des méthodes d’authentification ou des fonctionnalités que les fournisseurs intégrés ne prennent pas encore en charge, et ajouter des outils personnalisés.
JavaScript est utilisé ici pour gérer la connexion aux services d’IA, l’authentification et le traitement des réponses dans un environnement d’exécution distinct, afin que cette logique d’intégration ne perturbe pas votre environnement Python.
Les outils personnalisés peuvent appeler des services externes ou intégrer run_python pour que l’assistant exécute des scripts Python et accède aux fonctions d’iOS via ces scripts.
Si les fournisseurs intégrés répondent déjà à vos besoins, aucune configuration supplémentaire n’est nécessaire. Pour aller plus loin, consultez la documentation « JavaScript API » et les exemples de la page de configuration.
Achats et restauration
Dois-je racheter Pro sur un autre appareil ?
Non. Sur vos autres appareils, connectez-vous à l’App Store avec le compte Apple utilisé pour l’achat afin de continuer à utiliser Pro.
Si un message d’essai ou l’écran d’achat s’affiche encore après l’installation de Pythona sur un nouvel appareil ou sa réinstallation, votre achat n’a peut-être pas encore été synchronisé. Connectez-vous à Internet et touchez « Restaurer les achats » sur l’écran d’achat.
La restauration des achats est gratuite. Pro ne vous sera pas facturé une seconde fois si vous le possédez déjà avec le même compte Apple, même si vous touchez à nouveau le bouton d’achat.
Pourquoi Pro est-il indisponible après avoir changé de compte Apple ?
Votre achat de Pro est lié au compte Apple utilisé dans l’App Store lors de l’achat. Si vous passez à un autre compte avec lequel Pro n’a pas été acheté, Pro peut devenir indisponible. Reconnectez-vous au compte utilisé pour l’achat dans l’App Store, puis touchez « Restaurer les achats » dans Pythona.
Si des changements fréquents de compte App Store perturbent votre utilisation de Pythona, contactez-nous.
Une autre question ?
Pour signaler un problème, indiquez la version de l’app, les étapes pour le reproduire et le message d’erreur complet.
Contacter le développeur