我正在尝试使用 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 变量,但似乎我的应用程序甚至没有到达该模块并事先崩溃。