Although Apple only promotes Objective-C and Swift for iOS development, you can use any language that compiles with the clang toolchain. Python Apple support is a copy of CPython compiled for Apple platforms, including iOS. This package provides a Python.framework that can be dropped directly into an Xcode project. This allows you to embed a Python interpreter into your iOS application, which, in turn, means you can run Python code from inside your iOS application.

However, it's not much use being able to run Python code if you can't access system libraries. That's where Rubicon comes in. Rubicon is a bridge library that gives you transparent access to all the native Objective C classes that iOS provides. Using this, you can write an iOS application directly against the native iOS APIs.

Once you've written your native iOS application, you can use Briefcase to package your Python code as an iOS application bundle. Briefcase takes the distutils setup.py definition for your Python project, and uses that metadata to generate a stub iOS Xcode project, and add your Python code and dependencies so that they will be found when you run your iOS project. The stub project is generated using the Python iOS template.