我正在尝试使用py2app 0.7.3将python程序打包到应用程序。 我有一个(Mountain Lion)Mac,我在其上安装了Python 2.7.3的python.org版本以及所有必需的模块,使用了可用的可分发组件。 但是,我还需要一个32位版本的应用程序,所以在另一台(Mountain Lion)机器上,我使用macports(使用i386 for 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变量,但好像我的应用程序甚至没有到达该模块事先崩溃了。
答案 0 :(得分:1)
我找到了一个,也许不是那么优雅,但是有效的解决方案:
在py2app / __ init__.py中,我将变量'Compression'设置为 False 。这可以防止将site-packages文件夹压缩为zipfile。这部分解决了这个问题,因为之后仍然存在一些无效的mach-o错误消息,但是通过调用py2app就像
python setup-mac.py py2app --arch i386
生成的应用运行正常