Is it possible to deploy a Python application on the Mac App Store?
Asked Answered
J

6

50

Does Apple accept Python applications for distribution on the new Mac App Store?

If so, how should the application be packaged? Is py2app sufficient? Something else?

Jillion answered 9/2, 2011 at 0:45 Comment(1)
Starting a bounty. Has anyone actually done this? The current answers are vague.Jillion
C
59

I packaged Pennywise, which is available on the Mac App Store. It's based on Virgil's moneyGuru, which uses Python, PyObjC, and py2app.

You will have to follow Apple's process for preparing an application for submission to the Mac App Store. Most importantly, you will want to add the proper keys to your Info.plist, and remove any automatic updating mechanism, e.g. Sparkle. It's not strictly required, but you will probably also want to implement receipt checking. Using Xcode will make the submission process much easier. You can look at the moneyGuru source code for an example of how to use Xcode as the final part of the build process.

Py2app embeds a copy of the Python framework in the bundle, so I don't know whether Apple would approve an application that only linked to the system framework. While the primary binary can't support PPC, Apple does not seem to check the architectures of binaries in embedded frameworks.

One final caveat: I wouldn't recommend this process for writing new applications. Using Python, PyObjC, and py2app seriously complicates the build process and introduces additional dependencies.

Consentaneous answered 16/2, 2011 at 12:20 Comment(1)
What would you recommend instead then?Geny
H
9

I know it's possible because I know of at least one Python-based app that is in the app store ("Pennywise", which is based on my own app, moneyGuru, which uses Python + PyObjc + py2app). I didn't do it myself, so I'm not sure of the details.

Homology answered 14/2, 2011 at 14:40 Comment(1)
Awesome, I just emailed the Pennywise developer and he said he'll post an answer here today.Jillion
V
6

I wrote a comprehensive article explaining how to build and submit a Python app to the Mac App Store. It includes source code and build scripts for a barebones example app that I have successfully submitted.

Vicentevicepresident answered 25/6, 2014 at 7:21 Comment(2)
I find it funny that you wrote a shell script, instead of a python script, to automate the various parts of the process for uploading a python script to the App Store.Clumsy
Yeah I suppose that is a bit funny. Since most of the process is just running other CLI tools and there isn't much heavy validation or abstraction, shell scripts work okay as-is. -- More complex shell scripts I've written in other projects were eventually promoted to Python scripts.Vicentevicepresident
C
5

Yes, it is possible, as long as you adhere with the full set of approval guidelines. This means that the python interpreter will have to be bundled into your application, for example.

See here for a full list of requirements:

https://developer.apple.com/appstore/mac/resources/approval/guidelines.html

Cockiness answered 9/2, 2011 at 1:4 Comment(5)
This helps, but doesn't really cover exactly how to package a successful submission (the second part of my question).Jillion
The instructions say to use XCode and the associated packaging tools, I thought.Cockiness
"This means that the python interpreter will have to be bundled into your application, for example." Where are you getting that requirement from? There's a perfectly good interpreter at /System/Library/Frameworks/Python.frameworkEduce
@Educe The rules indicate applications are not allowed to do auto-updates or to force updates of external components. I combined that with my assumption that most people would want to control the version of python that runs with their application.Cockiness
Py2App embeds the interpreter into the application package.Guthrie
C
3

It is quite possible. My app is currently listed:

http://itunes.apple.com/us/app/quickwho/id419483981?mt=12&ls=1#

Bundled up with py2app, no worries.

Cory answered 29/10, 2011 at 3:30 Comment(0)
K
1

Apple provides the Build Applet tool for Python with Xcode so it should be supported by the App store. MacOS X 10.6.6 includes Python 2.5 and 2.6 as part of the default install, you can specify /usr/bin/python2.5 and /usr/lib/python2.5.

Klos answered 11/2, 2011 at 16:56 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.