A few days ago I ran across this old sample on ADC: Using PyObjC for Developing Cocoa Applications with Python. PyObjC is the Python/Objective-C bridge. Similiarly, there is also a Ruby bridge, RubyCocoa. Personally, I find the possibility of using Python or Ruby to write Cocoa applications more appealing than using Objective-C.
In any case, the example is pretty straight forward and even has helpful (necessary?) videos for the more involved steps. After completing everything, however, you’ll find that it will not build:
The build tool is complaining about not finding
usr/bin/env python. Apparantly, the PyObjC Cocoa template for setup.py is geared more towards looking for Python in a traditional Unix environment. This is an easy fix though.
Simply run Terminal and type in
which python to find the correct path to Python on your Mac OS X system:
Copy-and-paste your python path to the top line of the setup.py file while keeping the first two characters:
After saving your changes, re-building and running your app, you’ll notice that you are now presented with a runtime error:
This requires another simple fix. You’ll have to add an import line to the PyAverager.py file. The new line is highlighted below:
# # PyAverager.py # PyAverager # from PyObjCTools import NibClassBuilder, AppHelper info = NSBundle.mainBundle().infoDictionary()[u'PyObjCXcode'] for nibFile in info[u'NIBFiles']: NibClassBuilder.extractClasses(nibFile) for pythonModule in info[u'Modules']: __import__(pythonModule) __import__('Averager') if __name__ == '__main__': AppHelper.runEventLoop()
Another round of saving/re-building and you’ll now be able to run the sample as expected: