如何强制py2app以32位模式运行应用程序
我正在Mac OS X 10.6上用py2app构建一个应用程序包。这个应用程序使用了一些只支持32位的库,所以当我运行这个应用时,出现了一个导入错误,提示“没有合适的64位架构”。我该如何告诉py2app强制应用程序以32位模式运行呢?
5 个回答
4
经过很多次的尝试和折腾,我终于找到了让wx正常工作的办法。我还附上了我安装的版本信息。
这是我唯一成功的方法,希望对其他人也有帮助。
py2applet --arch=i386 -i (includes here) --make-setup (pythonfiles, icon)
我的安装情况大致是这样的
py2applet --arch=i386 -i wx, platform --make-setup print.py print.icns convert.py
我安装了python2.7,具体是:
wxPython2.8-osx-unicode-py2.7
setuptools-0.6c11-py2.7.egg
然后我进行了以下操作:
sudo easy_install-2.7 py2app
这次安装了py2applet的0.6.4版本
6
如果你只想让程序在32位模式下运行,那就不需要64位的架构。所以你可以用ditto
这个工具,把你应用包里所有非i386的架构都去掉。
举个例子:
ditto --rsrc --arch i386 YourApplication.app YourApplicationStripped.app
这样你的应用包会变得更小,而且在64位的Intel系统上也能确保以32位应用的方式运行。
手册:http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/ditto.1.html
或者你可以在终端里直接输入:man ditto
5
一种方法是使用仅支持32位的Python,比如从python.org下载的32位版本,然后配合py2app使用。另一种方法是在生成的应用程序包的Info.plist文件中,将LSArchitecturePriority
设置为i386
,可能还要设置为ppc
。想了解更多信息,可以查看这里。