FAQ

Frequently asked questions

About running code, libraries and extensions, file transfers, and the AI assistant.

01

Running code

Why doesn’t Stop end the run immediately?

Stop requests an interruption, but it cannot interrupt every operation immediately. Calls such as time.sleep(), waits for network responses or locks, and some native library computations must return before execution can stop. An import must also finish before stopping.

If it still won’t stop after waiting, save your files, then close Pythona from the iOS app switcher and reopen it.

Why does the app close while running a script?

If a script ends by calling quit(), exit(), or sys.exit(), Pythona closes the entire app by default.

Under “Settings → quit() / exit()”, change “Exit Pythona” to “End Current Run” to end the current run and keep the app open.

When processing large arrays or running large models, excessive memory use may cause iOS to terminate the app directly, possibly without a Python error. The “quit() / exit()” setting does not control this. Try smaller datasets or models, or process data in batches.

If the issue keeps happening, send code and steps that reproduce it when reporting the problem.

How can I pass arguments to a script?

Touch and hold the editor’s Run button, then select “Run With...”. Arguments are passed to the script as sys.argv[1:]. Use “Edit Run Configurations...” in the same menu to save frequently used arguments and set a default configuration.

How can I run a script from the Shortcuts app?

Tap the filename at the top of the editor, select “Shortcuts”, and copy the “Script Path”. In the Shortcuts app, add Pythona’s “Run Python Script” action and enter the path. You can add arguments if needed and pass the action’s returned text output to subsequent actions.

02

Libraries and extensions

Why can’t I install some third-party libraries?

The Package Manager installs third-party libraries distributed as pure-Python wheels. Some libraries are only available as source code or require compiled extensions written in C, C++, Rust, or similar languages, so they cannot be installed as they would on a computer. Native libraries such as NumPy and SciPy are precompiled and included with the app.

Pure-Python libraries must also be compatible with Python 3.14 and iOS. They may still fail to run if they depend on system features that are unavailable in this environment.

Explore included libraries

Do installed libraries sync through iCloud?

No. Libraries installed through the Package Manager are stored locally on the current device and shared by scripts in local storage, iCloud, and external folders.

After syncing a project through iCloud, install its dependencies separately on the other device.

Which Pythona-specific extensions are available, and how can I use iOS features?

Pythona’s built-in scene module supports games, animations, and interactive graphics. photos lets you select photos and videos through the system photo picker or save them to the photo library. audio provides playback, recording, and audio effects, while coreml loads Core ML models and runs inference on the device.

Use the pythona package to work with app features: pythona.packages installs third-party packages, and pythona.ai lets you create, read, and update custom AI provider configurations.

These modules depend on the runtime provided by Pythona. When moving to another Python environment, you need to replace or adapt the relevant calls. Modules with the same names in other apps may have different APIs.

For additional iOS system features, we recommend rubicon-objc to call native iOS APIs from Python, including UIKit for native interfaces. See the device information and WKWebView examples in the app.

These Pythona-specific extensions currently have no standalone API documentation. You can refer to the in-app examples, any available Python source code, and the modules’ built-in help. You can also ask the AI assistant to review these resources before writing and running code.

What should I use to build games or graphical interfaces?

For 2D games, animations, and audio playback, we recommend pygame (the app includes pygame-ce). pygame.mixer can play music or sound effects on its own, without creating a window.

You can build interfaces or web games with HTML, CSS, and JavaScript, then display them in Pythona using WKWebView. Web content is easy to reuse across platforms. When moving to another platform, you’ll need to adapt the code that displays it in WKWebView and connects it to Python or iOS features.

For native iOS interfaces, use rubicon-objc to call UIKit. Code that uses UIKit still depends on iOS.

Pythona also supports Tkinter for running existing Tkinter scripts or building simple tools. Its interface has a traditional desktop look. If the look and feel on mobile devices is a priority, we recommend a web interface or UIKit through rubicon-objc. The app includes examples.

03

Files

How can I exchange files with a computer?

For code projects, we recommend Git: clone the same remote repository in Pythona and on your computer, commit and push your changes, then pull the updates on the other device.

You can also sync files through iCloud Drive or export them using the system share menu. When transferring files to or from a Mac, AirDrop is another option.

You can enable “File Server” in the app, then use a browser on a computer connected to the same local network to visit the address shown in the app and upload or download files. The server has no login password. Use it on a trusted network and stop it when you finish transferring files.

04

AI Assistant

Which files can the AI assistant read and write?

The AI assistant uses the current conversation’s workspace as its default project directory. Before sending the first message in a new conversation, use “Change Workspace” to choose a folder. Navigating to another directory in the file browser does not change an existing conversation’s workspace.

The AI assistant can also call run_python to execute Python code and read files and folders within the app, including content outside the workspace. This access is not restricted to the selected workspace.

Does the AI assistant support AGENTS.md?

Yes. Create an AGENTS.md file at the root of the current conversation’s workspace to provide project information, coding conventions, and other collaboration guidelines.

The assistant automatically reads this file when processing each new message. After you save changes, they take effect the next time you send a message. Only AGENTS.md at the workspace root is loaded automatically; files with the same name in subdirectories are not automatically merged.

What can a custom provider (JS Provider) do?

A custom provider lets you connect to AI services using your own JavaScript code. You can use APIs, authentication methods, or service features that built-in providers do not yet support, and add custom tools.

JavaScript lets the code for AI service connections, authentication, and response handling run in its own environment, so it doesn’t interfere with your Python environment.

Custom tools can call external services or wrap run_python so the assistant can run Python scripts and access iOS features through those scripts.

If the built-in providers already meet your needs, no extra configuration is necessary. If you need a custom provider, refer to the JavaScript API and examples on the configuration page.

Have another question?

When reporting an issue, include the app version, steps to reproduce it, and the full error message.

Contact the developer