Twenty years ago, “computing” meant a desktop box or laptop. Today, your smartphone is likely the most powerful computer you carry—always with you, packed with sensors, cameras, and GPS capabilities that traditional machines can’t match. Yet despite this shift, Python developers have been largely locked out of this crucial platform.

If a phone is just a computer, shouldn’t we be able to use Python to program it? Until recently, the answer was “not easily.” Python on mobile devices has existed informally for years, but without mainstream adoption. The ecosystem of packages that make Python valuable—Numpy, Pandas, Matplotlib and more—simply didn’t have iOS or Android compatible versions, and lacked mechanisms to share that support.

The open source software (OSS) engineering team at Anaconda has been working to change this. For the past three years, Anaconda has supported the BeeWare Project to break down these barriers, coordinating efforts across the Python ecosystem with significant breakthroughs in recent months that will reshape how developers build applications.

Example of Python-based applications running on iOS and Android mobile devices.

Three challenges to bringing Python to mobile

Adding mobile platform support to Python itself

The first problem is making Python work on mobile devices at all. Mobile devices run operating systems that are highly specialized, requiring unique hardware requirements and strict security environments to work properly. Even compiling code requires a specialized approach. Unlike desktop systems where you compile on the same OS that will run the code, you must compile for iOS or Android on a desktop computer and ship the result to the device.

Standardization questions also need to be resolved. For example – should an Apple mobile device refer to itself as “iOS”, “iPhone”, or something else? Should an iPad identify itself as an “iPad”, or as an “iPhone”? These seemingly simple decisions are crucial to ensuring  interoperability between packages. 

When faced with a large technical challenge such as supporting a new platform, the Python community uses a document known as a Python Enhancement Proposal (PEP) to define a solution. Recently, the Anaconda Open Source team authored  PEP 730 and PEP 738 to cover iOS and Android support, and these proposals were accepted by the CPython Steering Council in early 2024. From there, our team began submitting patches to implement the proposal defined by the two PEPs.

As a result of these efforts, in October 2024, Python 3.13 was released and officially included iOS and Android as “Tier 3” supported platforms, reflecting a commitment from the Python project to maintain iOS and Android support in the CPython codebase.

Providing deployment tools for mobile

Official support from CPython is just the beginning. Tier 3 support doesn’t mean you can download “Python for iOS” or “Python for Android” from python.org. This is where the BeeWare Project fills the gap.

BeeWare makes it easy to build and distribute GUI applications using pure Python. Its Briefcase tool packages Python projects into standalone applications for multiple platforms, including desktop systems like Windows, macOS, and Linux, and crucially, iOS and Android mobile devices. This means developers can create mobile apps with Python and share them with anyone, not just other Python users.

Complementing Briefcase is Toga, a GUI toolkit for building native cross-platform interfaces that can access device hardware like cameras and GPS. With Toga, you can develop an app, for example, that combines GPS data and photos on your phone with locations on a map.

Using these tools, developers can write native iOS and Android applications in pure Python and distribute them through app stores. As an example, Travel Tips is a simple Open Source currency converter and tip calculating app – and it’s available in both the iOS and Google App stores. The app demonstrates how the same code runs across platforms with no modifications and without requiring platform-specific knowledge.

Example of an iOS and Android currency converter app built with Python.

Modifying Python packaging to support mobile platforms

Modern Python’s power comes from its ecosystem of packages.These packages are distributed on the Python Package Index (PyPI) in a file format known as a  “wheel”. Pure Python wheels work anywhere, but many valuable packages include binary modules compiled for specific platforms, requiring different wheel formats for each supported platform.

The PEP process standardized the naming and format of iOS and Android wheels, but standards need implementation. In October 2024, as a result of the Anaconda Open Source team’s work, pip 24.3 was released with support for the iOS platform tags specified in PEP 730, making it possible to install iOS binary wheels using standard Python tools.

In 2025, the Anaconda team also submitted changes to PyPI to enable uploads of iOS and Android wheels to the public PyPI repository. Combined with changes submitted to cibuildwheel – a critical tool in the Python ecosystem used by package maintainers to build and test binary wheels – that will bring support to iOS, the team is making it possible for the broader Python ecosystem to support mobile platforms.

To demonstrate the integration, the team compiled and uploaded binary wheels for pyspamsum, a simple fuzzy hashing implementation The release includes wheels for x86_64 simulators on Intel Macs, arm64 simulators on Apple Silicon Macs, and arm64 devices covering all iPhones and iPads from the last decade. Android support through similar tools is progressing, with android_24_x86_64 and android_24_arm64 wheels already uploaded.

Next, the team plans to tackle adding support for Android platform tags in pip and in cibuildwheel.

Why has Anaconda supported this work?

Why go to all this effort to support Python on mobile hardware platforms? In short, because it’s an existential risk for Python to not support these platforms.

Mobile devices have become nearly ubiquitous in modern life. The computing device that’s always with you—able to take photos, GPS readings, and quick notes—is more effective than any desktop machine.

In a future where tablets and phones increasingly replace traditional computers for most purposes, what happens if Python doesn’t support these platforms? Why would anyone learn Python if it can’t run on the devices they use daily? Python’s extensive library ecosystem becomes irrelevant if it becomes “that annoying legacy code” that must be maintained after the world has moved on.

By investing in this critical work, Anaconda is ensuring Python remains relevant for the next generation of computing, addressing this challenge before it becomes a crisis.

Where to go from here?

In just the past year, we’ve transformed Python’s mobile landscape from distant possibility to tangible reality. With iOS and Android wheels now on PyPI, we’ve laid the foundation for Python’s next great expansion.

Our work on cibuildwheel for iOS is already under review, with Android support following close behind. These aren’t minor details—they’re the infrastructure that will enable thousands of Python packages to seamlessly support mobile platforms.

As more packages add mobile support and Toga expands its hardware capabilities, we’re hopeful to see Python applications flourish across the entire computing spectrum and become formally recognized as a truly cross-platform language.

This journey ensures Python remains vibrant for the next generation of developers. At Anaconda, we’re proud to lead this transformation and invite you to join us in building Python’s cross-platform future.

Try it for yourself!

Want to try out Python on mobile? The BeeWare Project has a tutorial that will guide you through the process of building a GUI application, and deploying it as a desktop app, a phone app, and as a single-page website. If you’ve got any questions about BeeWare, the project has a discussion forum on Github and a Discord server for live chat. If you’d like to know more about Anaconda’s support of the Python Open Source ecosystem, visit the website.