2

python プログラムを py2app 0.7.3 でアプリにパッケージ化しようとしています。私は 1 台の (Mountain Lion) Mac に、Python 2.7.3 の python.org バージョンと必要なすべてのモジュールを、それらに利用可能な配布可能ファイルを使用してインストールしました。ただし、アプリの 32 ビット バージョンも必要だったので、別の (Mountain Lion) マシンで、macports (build_arch に i386 を使用) を使用して同じ環境 (つまり、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に設定しました。これにより、site-packages フォルダーが zip ファイルに圧縮されなくなります。その後、無効なマッチョエラーメッセージがいくつか残っていたため、これは問題を部分的に解決しましたが、py2app のように呼び出すことで

python setup-mac.py py2app --arch i386 

生成されたアプリは正常に実行されました

于 2013-03-26T13:13:01.637 に答える