Py2exeは、ほとんどデフォルトの設定でビルドすると大量の依存関係のモジュールファイルなどがexeファイルと同じフォルダに展開されます。

ですが、もっと配布しやすいように、単一のexeにした場合もあるでしょう。
この記事では、Py2exeを使用してPythonプログラムを単体のexeファイルにビルドする方法を解説します。
Py2exeで単体のexeで実行できるようにビルドする方法
Py2exeを使用してPythonプログラムを単体のexeファイルとしてビルドする方法ですが、いくつかのオプションを指定するだけで簡単に行なえます。設定する
bundle_filesとcompressdオプションを使用する
Py2exeでは、bundle_files
とcompressed
というオプションを使用することで、生成されるexeファイルのサイズを最小限に抑えることができます。
bundle_files
オプションは、生成されるexeファイルに必要なPythonランタイムをバンドルする方法を指定します。
値として1
を指定すると、Pythonランタイムが1つのexeファイルにバンドルされ、2
を指定すると、PythonランタイムがDLLファイルとしてバンドルされます。
compressed
オプションは、生成されるexeファイルを圧縮するかどうかを指定しますが、exeファイルにモジュールを同梱するとファイルサイズが大きくなるため、ファイルサイズを小さくしたい場合はTrue
にしてください。
True
を指定すると、exeファイルが圧縮され、ファイルサイズが小さくなります。
zipfileをNoneにする
Py2exeでは、生成されるexeファイルに必要なPythonモジュールをzipファイルにまとめることができます。
単体のexeファイルで実行する場合、zipファイルにまとめる機能は不要です、モジュールを全てexeに同梱したい場合はzipfile
にNone
を指定して、zipファイルを使用せずにモジュールを直接exeファイルにバンドルする必要があります。
ビルド実行
Py2exeを使用して単体のexeファイルで実行できるようにビルドするには、以下の手順を実行します。
- Pythonスクリプトを用意します。
setup.py
という名前のファイルを作成し、以下のような内容を記述します。
from distutils.core import setup
import py2exe
setup(
console=['sample.py'],
options={
'py2exe': {
'bundle_files': 1,
'compressed': True,
},
},
zipfile = None # options内ではないので注意
)
- コマンドプロンプトを開き、
setup.py
があるディレクトリに移動します。 python setup.py py2exe
と入力し、ビルドを実行します。- ビルドが成功すると、
dist
ディレクトリにexeファイルが生成されます。
以上が、Py2exeを使用して単体のexeファイルで実行できるようにビルドする方法です。
ただし、一部のモジュールは完全に同梱することができず、その場合はexeファイルと同じフォルダにDLLファイルが出力されます。

これらのモジュールの関数を全く使用していない場合でも実行時にエラーが発生する(未使用ならプログラムは停止しません)ので、DLLとexeファイルはセットで移動させるようにしてください。
完全な単一化ではありませんが、Py2exeではこれが限界になります。