Hi folks, I'm switching to to a recent py2app and moving to use setuptools- based builds instead of distutils. I've had several problems, but since I've been coding here and there in spare moments (including on the bus in the mornings), I haven't done a very good job of documenting them, I'm afraid.
I do have one persistent problem building both apps and plugins, which is that the settings I add to my plist don't appear in the resulting app/Contents/Info.plist. After much hair-pulling I think that is the source of many of the weird problems I've been seeing. For example, with the following setup: from setuptools import setup setup( plugin=['PastelsView.py'], setup_requires=['py2app'], options=dict( py2app=dict( extension='.saver', plist = dict( NSPrincipalClass='PastelsView', CFBundleShortVersionString = 'Pastels 0.3', CFBBundleDisplayName = 'Pastels', CFBundleIdentifier = 'org.livingcode.applications.pastels', ) ) ) ) I end up with an Info.plist that has the following: CFBundleIdentifier = org.pythonmac.unspecified.PastelsView CFBundleDisplayName = PastelsView CFBundleName = PastelsView NSPrincipalClass = PastelsView So it does end up with the right principal class, but other values are wrong, and the principal class appears to be set correctly more because that is the name of the script file than because I set it explicitly. In another program the app failed to pick up its icon from the plist specifier CFBundleIconFile, but successfully got the icon when I added iconfile in the py2app options. When I try to load the above screensaver I get the console messages: 'import site' failed; use -v for traceback Traceback (most recent call last): File "/Users/delza/Library/Screen Savers/PastelsView.saver/ Contents/Resources/__boot__.py", line 7, in ? _disable_linecache() File "/Users/delza/Library/Screen Savers/PastelsView.saver/ Contents/Resources/__boot__.py", line 2, in _disable_linecache import linecache ImportError: No module named linecache 2006-10-11 21:19:00.209 System Preferences[382] PastelsView has encountered a fatal error, and will now terminate. 2006-10-11 21:19:00.209 System Preferences[382] An uncaught exception was raised during execution of the main script: ImportError: No module named linecache This may mean that an unexpected error has occurred, or that you do not have all of the dependencies for this bundle. 2006-10-11 21:19:00.210 System Preferences[382] ScreenSaverModules: can't get principalClass for /Users/delza/Library/Screen Savers/ PastelsView.saver Details: Python 2.4.3 PyObjC pyobjc-1.4.1a0 installed with "python setup.py bdist_mpkg --open" py2app 0.3.4 Setuptools 0.7a1dev_r51485 OS X 10.4.7 (Intel) Code for the screensaver available from Google Code: http:// code.google.com/p/pastels/source Code works from the command-line (not built into a bundle) with my test harness. The linecache module is in place, the message that it is missing is spurious. When I change the Info.plist by hand to reflect the desired bundle name (Pastels) I still see it as PastelsView, and it still fails to load, so I'm obviously missing something important. If anyone has a clue as to what I'm doing wrong, please let me know. If there's any other information that would be helfpul, please let me know. Thanks! --Dethe All space and matter, organic or inorganic, has some degree of life in it [...] All matter/space has some degree of "self" in it. If either of these claims comes, in future, to be considered true, that would radically change our picture of the universe. --Christopher Alexander _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig