Yes, you can code Python on a phone in 2026. There are four realistic paths, depending on the phone you carry and how far you need pip to go. On Android, Termux ships CPython 3.13.x and most popular packages install on arm64. On iPhone, a-Shell compiles Python 3.11 into the app: fast, native, but pip is limited to pure-Python packages. iSH trades speed for Alpine Linux semantics. When you need the full stack (numpy, pandas, lxml, apt, a real Ubuntu), we open a cloud Linux container from a native phone app. This guide tells you which one wins when.
tl;dr
Android: Termux + pkg install python.
iPhone, native speed, pure-Python only: a-Shell.
iPhone, Alpine semantics, slow: iSH.
Anything serious (numpy/pandas/scipy, real apt, GB-scale data):
a cloud Ubuntu container reached from a native app. We
ship Cosyra with Python 3, full pip, and Claude
Code pre-installed; sign up gets you 1 hour of compute free, no credit card.
The four realistic paths
Every "Python on phone" question collapses to one of these four answers. They are not equivalent. Each one trades native speed, Linux semantics, and pip coverage against the others.
| Path | Platform | Python version | pip coverage | Native speed | Offline |
|---|---|---|---|---|---|
| a-Shell | iOS | 3.11 | Pure-Python only | Yes | Yes |
| iSH | iOS | Alpine apk (3.x) | Alpine repos + pip pure | No (3–5× emulator overhead) | Yes |
| Termux | Android | 3.13.x | Most arm64 wheels + Termux builds | Yes | Yes |
| Cosyra cloud container | iOS, Android, web | 3.12 (Ubuntu 24.04) | Full pip incl. C extensions | Yes (server-side) | No |
Our opinion, which a desktop-Python blog probably wouldn't share: the phone
keyboard is not the bottleneck for most "code Python from my phone" work.
The bottleneck is whether pip install <thing> just works. Three
of these four options say "yes, sometimes" and one says "yes, always." That's
the decision.
Path 1: Termux on Android
Termux is the answer on Android, full stop. The maintainer's home page on
termux.dev states: "Up-to-date versions of
Perl, Python, Ruby and Node.js are all available." That's first-party, not us
paraphrasing. The build script we read on 2026-05-24 in
termux-packages
pins TERMUX_PKG_VERSION=3.13.13, so a clean
pkg install python gives you CPython 3.13.x.
The setup is short:
# From a fresh Termux install
pkg update && pkg upgrade
pkg install python
python --version # Python 3.13.x
# Most popular packages install cleanly
pip install requests rich click
# Numerical stack: prefer Termux's own builds where available
pkg install python-numpy
The honest catches: native pip wheels assume glibc, and Android uses Bionic
libc, so packages that ship pre-built C extensions for Linux sometimes
refuse to install. Termux maintains its own apt-style builds for the popular
ones (python-numpy,
python-cryptography). That's why you reach for
pkg install before pip install when a wheel fights you.
Issue threads
#9329
and
#6664
are good reading if you hit pip path errors. They describe the most common bin-path
bug and how it gets resolved.
Two practical notes from running this on a Pixel 8 on a train commute
(reconstruction of the setup from our test notes, not a benchmark): a
pip install requests finishes in roughly the time it takes to read
this paragraph, and Termux survives the screen turning off as long as you've granted
the wake lock. Android's phantom-process killer can still reap long-running Python
processes. Keep that in mind for anything that runs more than a few minutes in
the background.
Path 2: a-Shell on iPhone
On iOS, a-Shell is the fastest local Python because the interpreter is
compiled into the app binary. Python 3.11 starts in well under a second.
There's no emulator tax. The
project README spells out the
constraint: "For Python, you can install more packages with
pip install packagename, but only if they are pure Python."
iOS doesn't allow third-party apps to generate native dynamic libraries at
runtime. That means a-Shell's bundled C compiler cannot produce loadable
Python C extensions. Pure-Python wheels like requests,
click, rich, beautifulsoup4, and
pyyaml with the optional pure-Python parser install cleanly. Anything
that ships compiled .so files (numpy, pandas, lxml, psycopg2, cryptography's
C backend) does not.
The day-to-day flow:
# Inside a-Shell
python3 -c 'print(1 + 1)'
pip install requests
python3 -c 'import requests; print(requests.get("https://example.com").status_code)'
Two failure modes to know. First, packages that claim to be pure Python
sometimes have build-time platform detection that breaks iOS —
a-Shell issue #987 describes curl_cffi failing this way despite its README. Second, a-Shell can
only write to ~/Documents/, ~/Library/, and ~/tmp/ — pip user-installs into the right place, but scripts that touch $HOME directly will surprise you. For the broader picture of where a-Shell's WebAssembly
sandbox helps and where it stops, see
Cosyra vs a-Shell.
Path 3: iSH on iPhone
iSH gives you real Alpine Linux semantics on iPhone, at the cost of speed.
The 32-bit x86 user-mode emulator runs the same apk package manager
you'd hit on a Linux server. Install Python and pip with:
# Inside iSH (Alpine shell)
apk update
apk add python3 py3-pip
python3 --version
Why pick this over a-Shell? You don't, for most cases. iSH is the answer
when you specifically need Alpine package semantics — a tool that expects an
apk-installable dependency, a tutorial that assumes Linux shell behavior
down to /proc entries, a script that calls
/bin/sh with POSIX expectations. The App Store stable build was last
updated in 2023 (TestFlight builds ship monthly), and modern Node binaries crash
with illegal instructions on the emulator (issue #2335, still open as of 2026-03), so AI coding agents that depend on Node are
not a path here.
We've used iSH on a Saturday morning on the couch when we wanted to read through someone's Alpine-only Dockerfile and run the same commands locally to understand a snippet. That's its sweet spot. We would not write production Python in it.
Path 4: a cloud Ubuntu container
For everything beyond what local iOS Python can do, the practical answer is a cloud Linux container reached from a native phone app. We built Cosyra exactly for this case: every signup gets an isolated Ubuntu 24.04 workspace on Azure, with Python 3, Node.js, Git, tmux, vim, and the four major AI coding CLIs (Claude Code, Codex CLI, OpenCode, Gemini CLI) pre-installed.
Because the workspace is real Ubuntu, every pip wheel that targets
manylinux_2_28_x86_64 just works. numpy installs. pandas installs.
lxml installs. psycopg2 installs. You can
apt install postgresql-client and pipe data straight from a cloud
database into a Python script. That's the kind of work that's physically impossible
on a-Shell.
# Inside a Cosyra workspace, reached from the iOS/Android app
python3 --version # Python 3.12.x (Ubuntu 24.04)
pip install pandas numpy lxml psycopg2-binary
python3 -c 'import pandas; print(pandas.__version__)'
The honest trade-off: no offline mode. The container lives in the cloud, so an airplane with no Wi-Fi is dead air. a-Shell and Termux both win on that single dimension. For everything else — full pip, persistent 30 GB storage, files that survive between iPhone and Android sessions on the same workspace — the cloud container is the answer. The mobile coding terminal pillar covers how this category sits next to local Linux apps, and the cloud terminal landscape breaks down DIY SSH-to-VPS setups.
Try Python from your phone in 5 minutes. Sign up gets 1 hour of compute free, no credit card, no trial signup. Python 3, pandas, numpy, and Claude Code are all pre-installed.
When each path actually wins
Decision framework, deliberately blunt:
- "I'm on Android and want to learn Python on the bus."
Termux.
pkg install python. Done. Free, fast, real CPython 3.13.x. - "I'm on iPhone and just want to run small scripts that hit an API."
a-Shell. Compiled-in Python 3.11 starts instantly, pip works for
requestsand friends, and you don't need a VPS. - "I'm on iPhone and need Alpine package semantics for one task." iSH. Otherwise stay on a-Shell.
- "I want numpy, pandas, scipy, or any C-extension pip package on my phone." A cloud Ubuntu container. There's no path that beats this on iOS; Termux gets you closer on Android but still needs Termux-specific builds for the heaviest packages.
- "I want to run Claude Code or another AI agent against a Python project from my phone." Cloud container. The agents are Node binaries; iSH cannot run modern Node (issue #2335), Termux has glibc/Bionic friction (claude-code #10644), and a-Shell has no Node at all. See our Claude Code on phone guide for the full agent walkthrough.
Where each option falls apart
Every honest comparison has to name the failure modes. Ours:
- a-Shell: scientific Python is out. Any pip package with a C extension fails. iOS sandbox limits writes to a few directories. The compiled-in Python version (3.11) moves with the App Store release cycle, so 3.12-only features lag.
- iSH: emulator overhead is real (3–5× native), the App Store build is frozen at 2023 stable, modern Node and most pre-built x86_64 binaries refuse to run, and the i386 user-mode emulator cannot execute x86_64 binaries at all.
- Termux: Android's phantom-process killer can reap
long-running Python tasks; Google Play's target-SDK rules have
historically kicked Termux around (it returned to Google Play in June 2024
as a separately versioned build, current
googleplay.2026.02.11); native wheels that assume glibc sometimes need apt-style Termux builds instead. - Cloud container (Cosyra): no offline mode. We won't pretend otherwise. If your work happens on a plane with no Wi-Fi, local terminals win. The Pro tier is $29.99/month after the free hour and the 10-hour trial, which is honest money — local terminals are free.
Worked example: a script you can run today
The simplest test that separates the four paths: install
rich (pure Python, prints colorful console output) and
lxml (C extension, fast XML parsing). Same script, four very different
outcomes.
# script.py
from rich import print
try:
from lxml import etree
print("[green]lxml: available[/green]")
except ImportError:
print("[red]lxml: not installed[/red]")
print("[bold]done[/bold]")
- Termux:
pip install rich lxml→ both install on arm64. Script prints "lxml: available". - a-Shell:
pip install richworks.pip install lxmlfails on the C-extension build. Script prints "lxml: not installed". - iSH:
pip install richworks.pip install lxmlcan succeed withapk add libxml2-dev libxslt-dev gcc musl-dev python3-devfirst, but compilation under emulation is slow enough to make you regret it. - Cosyra cloud container:
pip install rich lxml→ both install in seconds. Script prints "lxml: available". This matches the behavior on any Linux laptop.
That test is the entire essay condensed. If your real Python work never touches lxml-shaped packages, local iOS Python is enough. If it does, a cloud Ubuntu container is the only path that doesn't require apologizing for itself.
FAQ
Can you actually run Python on a phone in 2026?
Yes, on both iPhone and Android, but the four options have very different ceilings. a-Shell ships Python 3.11 compiled natively for iOS, with pip limited to pure-Python packages. iSH runs an Alpine Linux shell on iPhone via 32-bit x86 emulation at 3 to 5 times native overhead; `apk add python3` gives you full Alpine semantics. Termux on Android ships CPython 3.13.x and most popular pip packages install on arm64. For the full Linux experience — numpy, pandas, scientific stacks, anything with C extensions — open a cloud Ubuntu container from a native phone app.
Why does `pip install` fail on a-Shell for some packages?
The a-Shell project documents this constraint plainly: 'For Python, you can install more packages with pip install packagename, but only if they are pure Python.' iOS does not let third-party apps generate dynamic native libraries at runtime, so a-Shell's bundled C compiler cannot produce loadable Python C extensions. Real-world example: [a-Shell issue #987](https://github.com/holzschu/a-shell/issues/987) reports curl_cffi failing to install despite claiming to be pure Python, because its build script tries to detect the system architecture in a way iOS rejects.
What Python version does Termux ship on Android?
As of 2026-05-24, the [Termux Python package build script](https://github.com/termux/termux-packages/blob/master/packages/python/build.sh) pins `TERMUX_PKG_VERSION=3.13.13`, so `pkg install python` gives you Python 3.13.x. Termux's home page calls out 'up-to-date versions of Perl, Python, Ruby and Node.js' as available — that is first-party, not third-party reporting. Caveats: native packages assuming glibc can fail (Android uses Bionic libc), and pip historically has had install-path quirks ([issue #9329](https://github.com/termux/termux-packages/issues/9329), [issue #6664](https://github.com/termux/termux-packages/issues/6664) are good context).
Is there a real Python IDE for iPhone?
If you want an IDE-shaped experience (editor pane, run button, no Unix shell), there are commercial iOS apps in that lane. This guide covers terminal-based Python — `python3 file.py` from a shell prompt — which is what you want if you are writing real software, calling git, or running an AI coding agent that needs a terminal. Terminal-side, the choice is between local (a-Shell, iSH, Termux) and a cloud container reached from a native app. We think the cloud-container path beats every IDE-only app for anything past hobby scripts, because you also get apt, git, ssh, and the same files on every device. Many people who haven't tried the phone-keyboard-plus-cloud-shell flow assume the keyboard kills it. It doesn't — most of our work on the train is one-line `python3 ...` invocations against a script we wrote earlier on a laptop.
Can I run Claude Code or another AI coding agent in Python on my phone?
The AI coding agents (Claude Code, Codex CLI, OpenCode, Gemini CLI) are Node.js binaries, not Python — but they call out to whatever language your project is written in, including Python. On iSH, Node itself crashes on illegal instructions ([iSH issue #2335](https://github.com/ish-app/ish/issues/2335)), so the Node-based agents do not work. On Termux, Claude Code requires a workaround because the prebuilt installer assumes glibc, not Android's Bionic libc ([anthropics/claude-code issue #10644](https://github.com/anthropics/claude-code/issues/10644)). The path of least resistance for agent-driven Python work from a phone is a cloud Ubuntu container where Python, Node, and every agent are pre-installed.
Will scientific Python (numpy, pandas, scipy) install on any of these phone terminals?
On Termux, most numerical packages install on arm64 with `pkg install python-numpy` (Termux maintains its own builds because pip wheels often miss arm64 + Bionic libc). On a-Shell and iSH, no — numpy, pandas, scipy all need C extensions, and neither environment can load dynamically built native libraries cleanly (a-Shell issue tracker has years of attempts: [scipy thread](https://github.com/holzschu/a-Shell-commands/issues/60) is representative). If your work centers on scientific Python from a phone, only Termux (Android) or a cloud Linux container clears the bar.
Recap
Python on Android → Termux. Python on iPhone, pure-Python only → a-Shell. Alpine semantics on iPhone → iSH (rarely). Full pip, C extensions, AI coding agents, persistent storage → a cloud Ubuntu container reached from a native app.
We built Cosyra for the last case. Sign up gets 1 hour free, no credit card. Pro is $29.99/month for 120 hours of compute + 30 GB persistent storage when you need it.