Search code examples
pythonmacoswxpythonosx-snow-leopardpy2app

releasing Mac apps with wxPython and py2app that work on multiple versions of OS X


I periodically release a dmg for a Python/wxPython app with py2app, and it has been working great. I only have access to a Snow Leopard machine and I would like to ensure that my app works on as many versions of OS X as possible. In the past, I have found that an app created on Snow Leopard worked on Leopard but did not work on Tiger or earlier.

I have two questions:

(1) Can I release a single app that will work on Tiger, Leopard, Snow Leopard, and hopefully Lion? If so, how?

(2) Does it matter if I use 32 bit or 64 bit Python/wxPython?


Solution

  • Use a Python from one of the 32-bit-only installers from python.org. They are built as 32-bit i386 and ppc using a deployment target of OS X 10.3 so they will run on all Apple systems shipped that support any version of OS X 10.3 through 10.6 (and should run on OS X 10.7 when released). Any C extension modules built with its Distutils (setup.py) will be fine. If they need any 3rd-party C libraries that are not included with Mac OS X, you need to be careful to build and install them in a compatible manner. The most important thing is to build them as universal builds with -arch i386 and -arch ppc. Most of the most common libs these days can be made to do that without too much trouble. Also, to be safe, build them with gcc-4.0 and MACOSX_DEPLOYMENT_TARGET=10.3 (or 10.4 if that doesn't work). You'll need Xcode 3, not the newer Xcode 4, and need to install the optional 10.4 SDK from Xcode 3. Use a wxPython binary installer that meets those criteria and you should be good to go.