FAQ

Preguntas frecuentes

Sobre el inicio y la recuperación, la edición y ejecución de código, las bibliotecas y extensiones, la transferencia de archivos, los modelos y el asistente de IA, las compras y su restauración.

01

Inicio y recuperación

¿Qué hago si Pythona se cierra al abrir la app?

Prueba el inicio seguro: mantén presionado el ícono de Pythona en la pantalla de inicio y selecciona «Inicio seguro».

Un cierre inesperado al iniciar puede estar relacionado con la restauración de los archivos o carpetas abiertos anteriormente. El inicio seguro restablece el registro de pestañas abiertas y de la última carpeta, y abre un editor vacío y la carpeta Documents local. Tus archivos de script se conservan.

Cuando la app se abra, abre una a una las carpetas y los archivos que usabas para comprobar si el problema está relacionado con un archivo o una ubicación en particular. Si abrir un archivo provoca otro cierre y «Resaltado semántico» está activado, vuelve a usar el inicio seguro, desactiva «Resaltado semántico» en «Ajustes → Tema» y reinténtalo.

¿Qué hago si un script de ejemplo deja de funcionar después de actualizar la app?

Las actualizaciones de la app no reemplazan automáticamente los scripts de ejemplo guardados. Si un ejemplo deja de funcionar después de una actualización, restaura los ejemplos incluidos en la versión actual de la app y vuelve a ejecutarlo.

Primero respalda los ejemplos que hayas modificado y luego elige “Ajustes → Restaurar scripts de ejemplo”. Esto sobrescribe los archivos de ejemplo con el mismo nombre en la carpeta examples.

Restaurar los ejemplos no restablece los paquetes de Python instalados. Si sigue apareciendo un conflicto de versiones de dependencias, revisa las versiones de los paquetes indicados en el error.

Más sobre conflictos de dependencias
02

Edición y ejecución

¿Qué hago si la app se cierra mientras escribo código?

Si la app se cierra repetidamente mientras escribes código en el editor, puede estar relacionado con el completado de código. Desactiva «Mostrar sugerencias automáticamente» en «Ajustes → Completado de código» y vuelve a escribir en el mismo archivo para comprobar si sigue ocurriendo.

Al informar del problema, incluye el fragmento de código que lo provoca, los pasos exactos de escritura y si la app sigue cerrándose con «Mostrar sugerencias automáticamente» desactivado.

¿Por qué «Detener» no detiene la ejecución de inmediato?

«Detener» solicita una interrupción, pero no puede interrumpir todas las operaciones de inmediato. Las llamadas a time.sleep(), las esperas de respuestas de red o de bloqueos y algunos cálculos de bibliotecas nativas deben terminar antes de que la ejecución pueda detenerse. Si se está importando un módulo, también hay que esperar a que termine la importación.

Si la ejecución sigue sin detenerse después de un tiempo, guarda tus archivos, cierra Pythona desde el selector de apps de iOS y vuelve a abrirla.

¿Por qué se cierra la app al ejecutar un script?

Funciones de salida

Si un script termina su ejecución con quit(), exit() o sys.exit(), Pythona cierra toda la app de forma predeterminada.

En «Ajustes → quit() / exit()», cambia «Salir de Pythona» por «Finalizar solo la ejecución actual». Así terminará solo la ejecución en curso y la app permanecerá abierta.

Memoria insuficiente

Al procesar arreglos grandes o ejecutar modelos grandes, un uso excesivo de memoria puede hacer que iOS cierre directamente la app, sin que necesariamente aparezca un error de Python. El ajuste «quit() / exit()» no controla este tipo de cierre. Prueba a reducir la cantidad de datos o el tamaño del modelo, o a procesar los datos por lotes.

Hilos y UIKit

En Pythona, los scripts de Python se ejecutan de forma predeterminada en un hilo en segundo plano. Al llamar a UIKit mediante ctypes o rubicon-objc, las operaciones como crear o actualizar la interfaz deben ejecutarse en el hilo principal de iOS (hilo de la interfaz de usuario); de lo contrario, la app puede cerrarse inesperadamente.

Puedes agrupar estas operaciones en una función y usar la función integrada run_on_ui(...) para ejecutarla de forma asíncrona en el hilo principal, o enviarlas directamente a la cola principal mediante GCD. El ejemplo de WKWebView incluido en la app muestra cómo usar run_on_ui.

Si el problema se repite, envíanos el código y los pasos necesarios para reproducirlo.

¿Cómo termino la entrada y envío EOF?

Mientras se ejecuta un script, selecciona “Enviar EOF” en el menú de edición del campo de entrada de la consola, o pulsa Ctrl+D en un teclado externo. Primero se envía el texto del campo y después finaliza la entrada para la ejecución actual.

¿Cómo puedo pasar argumentos a un script?

Mantén pulsado el botón de ejecución del editor y selecciona «Ejecutar con argumentos...». Los argumentos se pasan al script mediante sys.argv[1:]. En «Editar configuraciones de ejecución...», dentro del mismo menú, puedes guardar los argumentos que uses con frecuencia y establecer una configuración predeterminada.

¿Cómo puedo ejecutar un script desde la app Atajos?

Toca el nombre del archivo en la parte superior del editor, selecciona «Atajos» y copia la «Ruta del script». Después, añade la acción «Ejecutar script de Python» de Pythona en la app Atajos e introduce la ruta. Si lo necesitas, puedes añadir argumentos y pasar la salida de texto que devuelve la acción a las acciones siguientes.

¿Cómo puedo ejecutar un script con un toque desde la pantalla de inicio?

Abre el script en Pythona, toca el nombre del archivo en la parte superior del editor, selecciona «Atajos» y copia la «URL».

En la app Atajos, crea un atajo, agrega la acción «Abrir direcciones URL» y pega la URL que copiaste.

Abre los detalles del atajo y selecciona «Agregar a pantalla de inicio». Elige el nombre y el ícono y toca «Agregar».

Después, al tocar el ícono en la pantalla de inicio, se abrirá Pythona y se ejecutará el script.

Ver las instrucciones de Apple para la pantalla de inicio
03

Bibliotecas y extensiones

¿Por qué no puedo instalar algunas bibliotecas de terceros?

El Administrador de paquetes instala bibliotecas de terceros distribuidas como wheels de Python puro. Algunas bibliotecas solo ofrecen código fuente o necesitan extensiones compiladas en C, C++, Rust u otros lenguajes, por lo que no se pueden instalar directamente como en una computadora. Las bibliotecas nativas como NumPy y SciPy vienen precompiladas e incluidas en la app.

Las bibliotecas de Python puro también deben ser compatibles con Python 3.14 y iOS. Si dependen de funciones del sistema que no están disponibles en este entorno, es posible que no funcionen.

Ver las principales bibliotecas incluidas

¿Por qué al instalar un paquete cambian las versiones de sus dependencias o se informa de un conflicto?

Todos los proyectos comparten el entorno de paquetes del usuario en el dispositivo. La instalación reutiliza las dependencias existentes que cumplen los requisitos; si no los cumplen, puede cambiarlas a una versión más reciente o anterior cuando sean paquetes de Python puro instalados por el usuario. Los paquetes incluidos en la app no se sustituyen automáticamente.

Antes de cambiar una versión, el instalador comprueba las dependencias relacionadas que declaran los demás paquetes instalados. Si encuentra un conflicto o un requisito que no puede gestionar, se detiene y explica el motivo. No prueba todas las combinaciones de versiones ni puede detectar todos los problemas de compatibilidad.

Puedes indicar versiones compatibles, desinstalar los paquetes en conflicto que ya no necesites y volver a intentarlo, o escribir tus propios scripts de Python para descargar y desplegar paquetes de Python puro y gestionar sus dependencias. Las llamadas a pythona.packages.install() siguen estas mismas reglas; la instalación manual también está sujeta a los límites de compatibilidad de Python e iOS. Reinicia Pythona después de sustituir un paquete que ya hayas importado.

¿Las bibliotecas instaladas se sincronizan mediante iCloud?

No. Las bibliotecas instaladas con el Administrador de paquetes se guardan localmente en el dispositivo actual. Los scripts del almacenamiento local, de iCloud y de las carpetas externas comparten esas mismas bibliotecas.

Después de sincronizar un proyecto mediante iCloud, debes instalar sus dependencias por separado en el otro dispositivo.

¿Qué bibliotecas incluye Pythona para usar las funciones de iOS?

Pythona incluye cocoa-py, con scene para juegos, animaciones y gráficos interactivos. photos permite elegir fotos y videos mediante el selector del sistema o guardarlos en la fototeca. audio ofrece reproducción, grabación y efectos de audio; coreml carga modelos de Core ML y ejecuta la inferencia en el dispositivo.

El paquete pythona permite usar funciones de la app: con pythona.packages puedes instalar paquetes de terceros y con pythona.ai crear, consultar y actualizar configuraciones de proveedores de IA personalizados.

Para acceder a más funciones del sistema iOS, recomendamos rubicon-objc para llamar a las API nativas de iOS desde Python, incluido UIKit para crear interfaces nativas. La app incluye ejemplos para consultar información del dispositivo y usar WKWebView.

cocoa-py es de código abierto y también es compatible con macOS; las funciones disponibles varían según la plataforma. El código fuente y la documentación de la API están en GitHub. Las contribuciones mediante issues o pull requests son bienvenidas.

Ver el código fuente y la documentación de cocoa-py

¿Qué debería usar para crear juegos o interfaces gráficas?

Para juegos 2D, animaciones y reproducción de audio, recomendamos pygame (la app incluye pygame-ce). pygame.mixer puede reproducir música o efectos de sonido por sí solo, sin crear una ventana.

Puedes crear interfaces o juegos web con HTML, CSS y JavaScript, y mostrarlos en Pythona mediante WKWebView. El contenido web es fácil de reutilizar en otras plataformas. Al pasar a otra plataforma, tendrás que adaptar el código que muestra la página en WKWebView y la conecta con Python o las funciones de iOS.

Si necesitas una interfaz nativa de iOS, puedes llamar a UIKit mediante rubicon-objc. El código que usa UIKit sigue dependiendo de iOS.

Pythona también admite Tkinter para ejecutar scripts de Tkinter existentes o crear herramientas sencillas. La interfaz tiene un estilo de escritorio tradicional. Si das más importancia a la apariencia y la interacción en dispositivos móviles, recomendamos una interfaz web o UIKit mediante rubicon-objc. La app incluye ejemplos.

04

Archivos

¿Cómo puedo intercambiar archivos con una computadora?

Para proyectos de código, recomendamos Git: clona el mismo repositorio remoto en Pythona y en tu computadora. Tras hacer cambios, crea un commit y envíalo con push; luego, en el otro dispositivo, usa pull para obtener las actualizaciones.

También puedes sincronizar archivos mediante iCloud Drive o exportarlos con la función de compartir del sistema. Para intercambiar archivos con una Mac, puedes usar AirDrop.

Puedes activar el «Servidor de archivos» en la app y abrir la dirección que muestra desde el navegador de una computadora conectada a la misma red local para subir o descargar archivos. El servidor no tiene contraseña de acceso. Úsalo en una red de confianza y detén el servicio cuando termines la transferencia.

05

IA

¿Qué modelos locales de IA puedo usar en Python?

MLX: la app incluye MLX, que puedes usar con mlx-lm para ejecutar modelos de lenguaje compatibles. Consulta examples/llm_demo.py en la app. La primera vez que lo ejecutes, instalará las dependencias por Internet y descargará un modelo de Hugging Face. Tu dispositivo debe ser compatible con MLX y tener suficiente memoria. La velocidad y el tamaño de los modelos que puedes ejecutar dependen del rendimiento y la memoria del dispositivo.

Apple Foundation Models: usa apple-fm-sdk, incluido en la app, para acceder al modelo de Apple que se ejecuta en el dispositivo. Impórtalo en Python con import apple_fm_sdk. Necesitas iOS / iPadOS 26 o posterior, un dispositivo compatible con Apple Intelligence activado y el modelo del sistema listo para usar. La disponibilidad también depende del idioma y la región. Consulta la documentación de abajo para usar la API.

Ambas opciones ejecutan la inferencia del modelo en el dispositivo. Descargar dependencias y modelos requiere conexión a Internet. Los scripts o las herramientas del asistente que utilizan servicios en línea también acceden a la red.

Ver cómo usar el SDK de Foundation Models para Python

¿Cómo conecto un modelo local al asistente de IA?

El proyecto de código abierto Pythona AI Setup permite crear configuraciones de Apple Foundation Models o modelos locales de MLX para el asistente de IA.

Clona el proyecto en Pythona y ejecuta main.py desde la raíz del proyecto. Sigue las indicaciones de la página para elegir un modelo y herramientas y añadir la configuración. Después, selecciona esa conexión en los ajustes del asistente de IA. Consulta el README del proyecto para ver los pasos detallados.

Un modelo MLX debe admitir llamadas a herramientas para usar funciones del asistente como leer y escribir archivos o ejecutar Python. Los modelos que no las admiten se pueden usar para conversar si se desactivan todas las herramientas.

Ver Pythona AI Setup y sus instrucciones

¿Qué archivos puede leer y escribir el asistente de IA?

El asistente de IA utiliza el área de trabajo de la conversación actual como directorio predeterminado del proyecto. Antes de enviar el primer mensaje de una conversación nueva, puedes elegir una carpeta con «Cambiar área de trabajo». Cambiar de directorio en el explorador de archivos no modifica el área de trabajo de una conversación existente.

El asistente de IA también puede llamar a run_python para ejecutar código Python y leer archivos y carpetas de la app, incluido el contenido que está fuera del área de trabajo. Este acceso no está limitado al área de trabajo seleccionada.

¿El asistente de IA admite AGENTS.md?

Sí. Crea un archivo AGENTS.md en la raíz del área de trabajo de la conversación actual para incluir información del proyecto, el estilo del código y otras pautas de colaboración.

El asistente lee este archivo automáticamente al procesar cada mensaje nuevo. Los cambios guardados se aplican la próxima vez que envíes un mensaje. Solo se carga automáticamente el archivo AGENTS.md de la raíz del área de trabajo; los archivos con el mismo nombre en subdirectorios no se combinan automáticamente.

¿Para qué sirve un proveedor personalizado (JS Provider)?

Un proveedor personalizado permite definir con JavaScript cómo conectarse a los servicios de IA. Puedes utilizar API, métodos de autenticación o funciones del servicio que los proveedores integrados todavía no admiten, y añadir herramientas personalizadas.

Aquí se utiliza JavaScript para gestionar la conexión a los servicios de IA, la autenticación y el procesamiento de respuestas en un entorno de ejecución independiente, evitando que esta lógica de integración interfiera con tu entorno de Python.

Las herramientas personalizadas pueden llamar a servicios externos o integrar run_python para que el asistente ejecute scripts de Python y acceda a las funciones de iOS a través de ellos.

Si los proveedores integrados ya cubren tus necesidades, no hace falta ninguna configuración adicional. Para ampliar las funciones, consulta la documentación «JavaScript API» y los ejemplos de la página de configuración.

06

Compras y restauración

¿Tengo que volver a comprar Pro en otro dispositivo?

No. Inicia sesión en App Store en tus otros dispositivos con la misma cuenta de Apple que usaste para la compra y podrás seguir usando Pro.

Si sigues viendo un aviso de prueba o la pantalla de compra después de instalar Pythona en un dispositivo nuevo o reinstalarlo, es posible que el estado de tu compra aún no se haya sincronizado. Conéctate a internet y toca “Restaurar compras” en la pantalla de compra.

Restaurar las compras es gratis. Aunque vuelvas a tocar el botón de compra, no se te cobrará de nuevo por Pro si ya lo tienes con la misma cuenta de Apple.

¿Por qué no puedo usar Pro después de cambiar de cuenta de Apple?

Tu compra de Pro está vinculada a la cuenta de Apple que usaste en App Store al comprarlo. Si cambias a otra cuenta que no haya comprado Pro, es posible que no puedas usarlo. Vuelve a iniciar sesión en App Store con la cuenta que usaste para la compra y toca “Restaurar compras” en Pythona.

Si cambiar con frecuencia de cuenta de App Store afecta tu uso de Pythona, contáctanos.

¿Tienes otra pregunta?

Al informar de un problema, incluye la versión de la app, los pasos para reproducirlo y el mensaje de error completo.

Contactar al desarrollador