Greetings, I've been successfully using py2app for about a year now to build an application bundle out of a large wxPython application I've developed. Recently, I upgraded my development machine to OSX 10.4.2, and installed wxPython 2.6.1.0 and py2app 0.2. I'm using the Apple-supplied Python interpreter (version 2.3.5) and the "TigerPython23Compat.pkg" package to ensure that the Python interpreter finds wxPython 2.6.1.0 instead of the Apple-suppled version 2.5.3.
This works fine when my application is run directly from the command- line -- a simple "import wx" correctly imports version 2.6.1.0 and the application runs as normal. However, when I use py2app to create an application bundle, the resulting application starts up, but soon crashes because it's running a completely different version of wxPython -- not version 2.5.3, which would make some sense, but version 2.6.0.1! The weird thing is that I never installed wxPython 2.6.0.1 on my machine -- the /Library/Python/2.3/wx-2.6-mac-ansi/wx/__version__.py file definitely shows the version as 2.6.1.0, and I used "grep" to search for the string "2.6.0.1" in "/Library" and "/System", without success. So I'm at a complete loss to understand how an application bundle created using py2app could use a version of wxPython I never installed. I'm not sure if the problem is an obscure bug in py2app, if something is screwed up in the wxPython 2.6.1.0 library (maybe it includes the wrong version of an .so files or something), or if I've done something stupid to cause the problem myself. But, whatever the cause, it seems very strange that the following code: import wx print wx.__version__ prints "2.6.1.0" when run in the Python interpreter, but prints "2.6.0.1" when run as an application bundle built using py2app. Any suggestions? Note: I'm not using wxversion to choose the version of wxPython to use, so that shouldn't be causing any problems. In case it helps, here's a (simplified) copy of the "setup.py" file I'm using to build the application using py2app: ####################################################################### """ setup.py Simplified py2app setup script for the "Ensemble" application. """ from distutils.core import setup import py2app import sys import os def rmrf(path): """ Delete the given directory tree. """ entries=os.listdir(path) for e in entries: fullname=os.path.join(path,e) if os.path.isdir(fullname): rmrf(fullname) else: os.remove(fullname) os.rmdir(path) def buildApp(): """ Build our standalone application, using py2app. We store our generated Ensemble.app bundle into the ensemble/build-mac/standalone directory. """ if os.path.exists("disk-image"): rmrf("disk-image") os.mkdir("disk-image") os.mkdir("disk-image/dNet Ensemble") sys.path.insert(0, "../framework") # Won't be necessary with py2app v0.1.7 plist = dict( CFBundleIconFile = "Ensemble", CFBundleName = "dNet Ensemble", CFBundleShortVersionString = "2.x", CFBundleGetInfoString = "dNet Ensemble 2.x", CFBundleExecutable = "dNet Ensemble", CFBundleIdentifier = "com.dnet.ensemble", ) app = dict(script="../framework/main.py") setup( app=[app], options={'py2app' : {'bdist_base' : "temp", 'dist_dir' : "disk-image/dNet Ensemble", 'iconfile' : "Ensemble.icns", 'plist' : plist, 'includes' : "requiredModules", }, } ) if __name__ == "__main__": buildApp() ####################################################################### Thanks in advance for any suggestions you may have! - Erik. _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig