【问题标题】:How to force py2app to run app in 32-bit mode如何强制 py2app 以 32 位模式运行应用程序
【发布时间】:2011-11-20 07:12:23
【问题描述】:

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

【问题讨论】:

    标签: python macos 32-bit py2app


    【解决方案1】:

    如果您只想在 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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 谢谢,我最终在 python.org 上使用了 32 位版本。
      • 这对我不起作用。我不得不使用the ditto solution
      • 在 1.6.8 上,一旦我为 dist 制作了一个应用程序,然后我在属性列表编辑器中编辑了 info.plist,方法是在树的根目录中添加一个名为的集合(在弹出窗口中提供) “架构优先级”。我很惊讶默认设置立即提供了 i386。已保存。在此干预应用程序启动后没有 32 位错误。
      • 我会收回这一点:它确实有效。我的错误是将值设为字符串而不是字符串数组。
      【解决方案3】:

      在经历了很多痛苦并试图让 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

      【讨论】:

        【解决方案4】:

        好的,鉴于我在 Vebjorn 的一个办公室工作,可能这是发布答案的最佳位置,因此我们会再次找到它。给定一个 py2app 选项字典:

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

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

          • 是的。我正在使用 arch -i386 运行 setup.py,但构建的应用程序仍尝试以 64 位运行。
          猜你喜欢
          • 2011-09-25
          • 1970-01-01
          • 1970-01-01
          • 2013-05-29
          • 1970-01-01
          • 2013-06-06
          • 1970-01-01
          • 1970-01-01
          • 2013-04-20
          相关资源
          最近更新 更多