【发布时间】:2011-11-20 07:12:23
【问题描述】:
我正在尝试在 Mac OS X 10.6 上使用 py2app 构建应用程序包。该应用程序使用了一些仅针对 32 位编译的库,因此当应用程序运行时,会出现 ImportError “没有适当的 64 位架构”。如何告诉 py2app 强制应用以 32 位模式运行?
【问题讨论】:
标签: python macos 32-bit py2app
我正在尝试在 Mac OS X 10.6 上使用 py2app 构建应用程序包。该应用程序使用了一些仅针对 32 位编译的库,因此当应用程序运行时,会出现 ImportError “没有适当的 64 位架构”。如何告诉 py2app 强制应用以 32 位模式运行?
【问题讨论】:
标签: python macos 32-bit py2app
如果您只想在 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
【讨论】:
一种方法是使用仅 32 位的 Python,例如可从 python.org 下载的仅 32 位版本和 py2app。另一种方法是在生成的应用程序包的 Info.plist 中将 LSArchitecturePriority 设置为 i386 和可能的 ppc。请参阅here 了解更多信息。
【讨论】:
在经历了很多痛苦并试图让 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
这里安装了 0.6.4 版的 py2applet
【讨论】:
好的,鉴于我在 Vebjorn 的一个办公室工作,可能这是发布答案的最佳位置,因此我们会再次找到它。给定一个 py2app 选项字典:
options = {}
...
options['plist'] = { "LSArchitecturePriority": [ "i386" ] }
...
setup(options={'py2app':options})
这将为 LSArchitecturePriority 键创建一个包含一个字符串值的数组。
【讨论】:
你需要强制 python 在 32 位模式下运行。
【讨论】: