Hi,
It's as I feared. The wxPython which comes with Xcode 3.2.6 and
earlier is not suitable for usage in a Universal binary. Bundled with
relax:
$ file relax.app/Contents/Resources/lib/python2.6/wx/_webkit.so
relax.app/Contents/Resources/lib/python2.6/wx/_webkit.so: Mach-O
universal binary with 2 architectures
relax.app/Contents/Resources/lib/python2.6/wx/_webkit.so (for
architecture ppc): Mach-O bundle ppc
relax.app/Contents/Resources/lib/python2.6/wx/_webkit.so (for
architecture i386): Mach-O bundle i386
and the original Xcode installed version:
$ file
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode/wx/_webkit.so
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode/wx/_webkit.so:
Mach-O universal binary with 2 architectures
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode/wx/_webkit.so
(for architecture i386): Mach-O bundle i386
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode/wx/_webkit.so
(for architecture ppc7400): Mach-O bundle ppc
The x86_64 target is missing. The files are not exactly the same though:
$ diff
/Users/edward/relax/relax-1.3/dist/relax.app/Contents/Resources/lib/python2.6/wx/_webkit.so
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode/wx/_webkit.so
Binary files
/Users/edward/relax/relax-1.3/dist/relax.app/Contents/Resources/lib/python2.6/wx/_webkit.so
and
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode/wx/_webkit.so
differ
This would be because py2app uses the 'strip' program to shrink the
size of the binary files. The Python binary from Xcode 3.2.6 is also
only i386 and ppc. Now I have to work out how to turn off x86_64
permanently, and to hunt down all binary files in the relax.app
hierarchy which are not the i386/ppc architecture combination.
Regards,
Edward
On 5 April 2012 16:20, Ben Eisenbraun <bene@xxxxxxxxxxxxxxxxxxx> wrote:
Hi Edward,
A solution is posted at
http://stackoverflow.com/questions/3461983/evt-tickcount-not-found-with-python2-6-on-osx-10-6-3,
I saw that suggestion when I read the thread yesterday. If you're willing
to give up the 64-bit version, this thread might also be useful:
http://stackoverflow.com/questions/7472301/how-to-force-py2app-to-run-app-in-32-bit-mode
This fix doesn't solve the problem of the py2app created relax app not
using the bundled Python version and internal Python modules, so some
users will still be affected by that.
Yesterday when I was looking at this, I added a 'print sys.executable' to
__boot__.py and got:
4/4/12 12:40:10.353 PM [0x0-0x18ac8ab].com.nmr-relax.relax:
/nfs/programs/i386-mac/relax/1.3.14/relax.app/Contents/MacOS/python
And it doesn't change regardless of what PythonExecutable or
PyRunTimeLocation is set to in the Info.plist. So it appears that it is
calling the correct binary, but the Contents/MacOS/python is just a binary
wrapper for some other python? I suppose I should read the py2app docs at
some point.
-ben
--
| Ben Eisenbraun
| SBGrid Consortium | http://sbgrid.org |
| Harvard Medical School | http://hms.harvard.edu |