4

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

4

5 回答 5

6

如果您只想在 32 位模式下运行,则不需要 64 位架构。ditto因此,您可以使用该实用程序从生成的应用程序包中删除所有非 i386 架构。

例子:

ditto --rsrc --arch i386 YourApplication.app YourApplicationStripped.app

您的应用程序包会更小,并且肯定会作为 32 位应用程序运行,即使在 64 位 Intel 系统上也是如此。

手册:http: //developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/ditto.1.html

或者只是在终端中运行:man ditto

于 2011-11-30T02:44:44.920 回答
5

一种方法是使用 32 位 Python,例如可从 python.org 下载的 32 位版本和 py2app。另一种方法是设置LSArchitecturePrioritytoi386并且可能ppc在生成的应用程序包的 Info.plist 中。请参阅此处了解更多信息。

于 2011-09-19T16:37:15.017 回答
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

我用
wxPython2.8-osx-unicode-py2.7
setuptools-0.6c11-py2.7.egg安装了 python2.7
然后

sudo easy_install-2.7 py2app

这安装了 0.6.4 版的 py2applet

于 2012-01-29T13:36:20.493 回答
1

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

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

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

于 2013-05-14T16:40:58.313 回答
0

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

于 2011-09-19T14:21:17.403 回答