=== 目次 ===
何もしないときのファイルサイズ
以下のサンプルコードに対してcx_Freeezeを作成して実行ファイル(exeファイル)を作成してみます。main.py
print("これはテストです。")
setup.py
from cx_Freeze import setup, Executable
exe = Executable(
script="main.py"
)
setup(
name = "APP NAME",
description = "DESCRIPTION",
executables = [exe]
)
作成した実行ファイルのあるフォルダのサイズ確認すると下図のように14MBのファイルサイズがあることがわかります。

原因
上記の例では高々printの1文しかないのに14MBもファイルサイズは結構大きいですよね。では、原因は何なんでしょうか。
答えは不要ライブラリを実行ファイルに含んでいるからです。
さきほどのサンプルコードにおいて、cx_Freezeでexeファイルとともに作成されたlibフォルダの中を見ると下図のようになっています。

(私のPCはそこまで大量のPythonライブラリをインストールしてないので14MBとなっていましたが、大量のPythonライブラリをインストールしているPCで実行ファイルを生成するともっと大きなファイルサイズになるかと思います)
対処方法
上記の通り、不要のライブラリが含まれているためにファイルサイズが大きくなってしまっていたので、対処方法としては不要ライブラリを除外する設定をしてあげればOKです。以下が不要なライブラリを除外する設定をしたsetup.pyファイルです。
setup.py
from cx_Freeze import setup, Executable
exe = Executable(
script="main.py"
)
excludes = [
"asyncio",
"email",
"html",
"http",
"multiprocessing",
"xml"
]
setup(
name = "APP NAME",
description = "DESCRIPTION",
executables = [exe],
options = {
"build_exe" : {
"excludes" : excludes
}
},
)
上記のように記述することで不要のライブラリをビルドから除外することができます。
もしエラーが出る場合は必要なライブラリまで除外している可能性が高いので、その場合には除外対象から外しましょう。
上記のサンプルコード実行で作成された実行ファイルのファイルサイズは11MBと、ライブラリの除外設定をしなかったときの14MBから3MBだけ削減することができました。
まとめ
この記事ではcx_Freezeで作成した実行ファイルのファイルサイズが大きい原因とその対処方法(ファイルサイズを減らす方法)を紹介しました。この記事の内容を実施しても10MB未満にすることは残念ながら難しいですが、PCに大量のPythonライブラリをインストールしている場合は劇的にファイルサイズを小さくすることができるかと思います。
Pythonの実行ファイルのファイルサイズで悩んでいる方の参考になれば幸いです。