7

Python と wxwidgets を使用して小さなプログラムを開発しました。これは非常に単純なプログラムで、必要に応じてミニ フレームのみを使用して情報を表示し、残りの時間は何も表示せず、タスク バーにアイコンのみを表示します。

py2exe (単一ファイル exe モード、最適化) を使用して exe をビルドすると、6MB のサイズのファイルが生成されます。

必要のないライブラリや dll を含めないようにしましたが、ミニ フレームとタスクバーのアイコンだけでこのような大きなファイルを取得する理由がわかりません。

py2exe で生成された exe のサイズを小さくする方法はありますか?

これが私が自分で少し減らすためにしたことです:

options = {"py2exe":{"excludes" : ['_gtkagg', '_tkagg', 'bsddb', 'curses', 'email', 'pywin.debugger',
                                'pywin.debugger.dbgcon', 'pywin.dialogs', 'tcl',
                                'Tkconstants', 'Tkinter'],
                    "dll_excludes": ['libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll', 'tcl84.dll',
                                'tk84.dll'],

ありがとう。

4

2 に答える 2

5

プログラムが単純であるという事実は、プログラムが小さいという意味ではありません。あなたのプログラムは wxWidget スタックを介して多くの依存関係を持っており、これらすべてを考慮すると 6 Mb はそれほど大きくないように見えます。

しかし、質問に戻ります。py2exe で生成されたプログラムを縮小するには、いくつかの明白なことを行うことができます。

  1. 配布物を減らしましょう。あなたはすでにこの道を歩み始めているようです。プログラムと一緒に配布されているものをすべて調べて、不要な場合は削除してください。DllDepend は、DLL がプログラムと共に配布されている理由を教えてくれます (おそらく pyd がそれを必要とするため)。他のモジュールについては、それらを削除して、まだ機能するかどうか試してください...

  2. より良い圧縮: 各 dll で upx を実行します。最終的なプログラム/アーカイブを 7zip の最大圧縮レベルで圧縮します。

于 2009-10-24T21:08:14.427 に答える
3

ほとんどのスペースはPythonランタイム自体です。py2exeは、プログラムをネイティブx86命令などに「コンパイル」しません。Python、*。pycファイル、およびプログラムが使用するすべてのモジュールを、それ自体で実行されるバンドルにバンドルするだけです。

したがって、*。pycファイルのみを配布し、ユーザーに任せて独自のPython配布を提供し、必要なモジュールをインストールすることを選択できます。これはWindowsであまり人気のないオプションですが、他の場所では通常発生します。

于 2009-10-24T12:41:50.327 に答える