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

4 投票
5 回答
2303 浏览
提问于 2025-04-17 02:36

我正在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。想了解更多信息,可以查看这里

撰写回答