2013-03-25 70 views
2

我想用py2app 0.7.3将python程序打包到应用程序。 我有一个(Mountain Lion)Mac,我在其上安装了python.org版本的Python 2.7.3以及所有必需的模块,通过使用它们可用的可分发程序。然而,我还需要一个32位版本的应用程序,所以在另一台(Mountain Lion)机器上,我使用macports(使用i386 for build_arch)设置了相同的环境(即python +模块)。py2app无效链接到zlib

从源文件来看,我的程序在两台机器上运行良好。但是,只有在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变量,该文件可以在包中找到,但是好像我的应用程序甚至不能访问该模块并事先崩溃。

回答

1

我找到了,也许不那么优雅,但工作液:

在py2app/__ init__.py我变“压缩”设置为。这可以防止site-packages文件夹压缩成zip文件。这部分解决了问题,但仍有一些无效的Mach-O的错误消息之后,但通过调用像

python setup-mac.py py2app --arch i386 

py2app生成的应用程序运行得很好