Py2exeで生成したexeファイル単体で実行できるようにビルドする方法

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

デフォルト設定だと大量の依存関係ファイルが出力される

ですが、もっと配布しやすいように、単一のexeにした場合もあるでしょう。

この記事では、Py2exeを使用してPythonプログラムを単体のexeファイルにビルドする方法を解説します。

目次から探す

Py2exeで単体のexeで実行できるようにビルドする方法

Py2exeを使用してPythonプログラムを単体のexeファイルとしてビルドする方法ですが、いくつかのオプションを指定するだけで簡単に行なえます。設定する

bundle_filesとcompressdオプションを使用する

Py2exeでは、bundle_filescompressedというオプションを使用することで、生成される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に同梱したい場合はzipfileNoneを指定して、zipファイルを使用せずにモジュールを直接exeファイルにバンドルする必要があります。

ビルド実行

Py2exeを使用して単体のexeファイルで実行できるようにビルドするには、以下の手順を実行します。

  1. Pythonスクリプトを用意します。
  2. setup.pyという名前のファイルを作成し、以下のような内容を記述します。
from distutils.core import setup
import py2exe
setup(
    console=['sample.py'],
    options={
        'py2exe': {
            'bundle_files': 1, 
            'compressed': True, 
        },
    },
    zipfile = None # options内ではないので注意
)
  1. コマンドプロンプトを開き、setup.pyがあるディレクトリに移動します。
  2. python setup.py py2exeと入力し、ビルドを実行します。
  3. ビルドが成功すると、distディレクトリにexeファイルが生成されます。

以上が、Py2exeを使用して単体のexeファイルで実行できるようにビルドする方法です。

ただし、一部のモジュールは完全に同梱することができず、その場合はexeファイルと同じフォルダにDLLファイルが出力されます。

いくつかのDLLが出力されている

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

完全な単一化ではありませんが、Py2exeではこれが限界になります。

目次から探す