2

我正在尝试使用 py2app 0.7.3 将 python 程序打包到应用程序中。我有一台(Mountain Lion)Mac,我在其上安装了 python.org 版本的 Python 2.7.3 和所有必需的模块,方法是使用它们可用的可分发文件。但是,我还需要一个 32 位版本的应用程序,所以在另一台(Mountain Lion)机器上,我使用 macports(i386 用于 build_arch)设置了相同的环境(即 python + 模块)。

从源代码来看,我的程序在两台机器上都运行良好。但是,只有在 64 位机器上生成的应用程序才能工作。尝试运行在 macports 机器上生成的 32 位应用程序时,出现错误:

Traceback (most recent call last):
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/py2app/apptemplate/lib/site.py", line 20, in <module>
    import os
zipimport.ZipImportError: can't decompress data; zlib not available

对于这两个应用程序,使用了相同的 setup.py 文件。

似乎在 macports 机器上生成的应用程序仍然尝试使用外部 Python 而不是与其打包的那个(尽管它不应该是半独立的,因为没有使用系统的 Python)。zlib 存在于 .app 文件中(当然也存在于外部)。

我发现的有关此问题的大多数其他帖子,建议更改可在包内找到的 __boot__.py 文件中的 sys.path 变量,但似乎我的应用程序甚至没有到达该模块并事先崩溃。

4

1 回答 1

1

我找到了一个可能不那么优雅但有效的解决方案:

在 py2app/__init__.py 中,我将变量 'Compression' 设置为False。这可以防止将站点包文件夹压缩为 zip 文件。这部分解决了问题,因为之后仍然有一些无效的 mach-o 错误消息,但是通过调用 py2app 之类的

python setup-mac.py py2app --arch i386 

生成的应用程序运行良好

于 2013-03-26T13:13:01.637 回答