如何强制py2app以32位模式运行应用程序

时间:2011-09-19 14:11:25

标签: python macos 32-bit py2app

我正在尝试使用Mac OS X 10.6上的py2app构建应用程序包。该应用程序使用一些仅编译为32位的库,因此当应用程序运行时,存在一个ImportError“没有合适的64位架构”。如何告诉py2app强制应用程序以32位模式运行?

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:5)

一种方法是使用32位的Python,例如可从python.org下载的32位版本的py2app。另一种方法是在生成的应用包的Info.plist中将LSArchitecturePriority设置为i386,并可能设置ppc。有关详细信息,请参阅here

答案 2 :(得分: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版本

答案 3 :(得分:1)

好的,当我在Vebjorn工作一间办公室时,可能这是发布答案的最佳地点,所以我们会再次找到它。给出py2app选项的字典:

options = {}
...
options['plist'] = { "LSArchitecturePriority": [ "i386" ] }
...
setup(options={'py2app':options})

这将为LSArchitecturePriority键创建一个字符串值的数组。

答案 4 :(得分:0)

您需要强制python以32位模式运行。