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