【cx_Freeze】生成するexeを軽量化する方法

cx_Freezeを使うことで、Pythonの実行環境がないパソコンでも動作するアプリケーションを作成することができます。

非常にカンタンかつ高速にexeファイルを生成することができますが、小島のプログラムであってもファイルサイズが大きくなりがちです。

この記事では、Pythonのパッケージングツールであるcx_Freezeを使用して生成するexeファイルのサイズを軽量化する方法について解説します。

目次から探す

cx_Freezeを使って生成するexeを軽量化する方法

Pythonのパッケージングツールであるcx_Freezeを使用すると、Pythonスクリプトを実行可能なexeファイルに変換することができます。

しかし、生成されるexeファイルのサイズが大きくなることがあります。

この記事では、cx_Freezeを使用して生成するexeファイルのサイズを軽量化する方法について解説します。

サンプルコードを含める

不要なモジュールの除外

cx_Freezeを使用してexeファイルを生成する際、デフォルトでは全てのモジュールが含まれます。

しかし、実際にはプログラムに必要のないモジュールが含まれている場合があります。

不要なモジュールを除外することで、exeファイルのサイズを削減することができます。

以下は、不要なモジュールを除外するためのcx_Freezeの設定例です。

import sys
from cx_Freeze import setup, Executable
# 不要なモジュールを除外する
excludes = ['tkinter', 'numpy']
# cx_Freezeの設定
setup(
    name='my_program',
    version='1.0',
    description='My Python Program',
    executables=[Executable('my_program.py')],
    options={'build_exe': {'excludes': excludes}}
)

上記の例では、tkinternumpyというモジュールを除外しています。

不要なモジュールを特定し、excludesリストに追加することで、exeファイルのサイズを削減することができます。

numPyは非常に大きなライブラリが用いられているため、numPyを除外するだけで200MB以上小さくなることがあります。

コンパイルオプションの最適化

cx_Freezeを使用して生成するexeファイルのサイズを軽量化するためには、コンパイルオプションを最適化することも重要です。

最適化により、不要な情報や余分なコードを削除し、exeファイルのサイズを小さくすることができます。

以下は、コンパイルオプションを最適化するためのcx_Freezeの設定例です。

import sys
from cx_Freeze import setup, Executable
# コンパイルオプションの最適化
optimize = 2
# cx_Freezeの設定
setup(
    name='my_program',
    version='1.0',
    description='My Python Program',
    executables=[Executable('my_program.py')],
    options={'build_exe': {'optimize': optimize}}
)

上記の例では、optimize変数に2を指定しています。

この値は最適化レベルを表し、値が大きいほど最適化が進みます。

ただし、最適化レベルを上げると実行速度が低下する可能性もあるため、適切な値を選択する必要があります。

ファイル圧縮の利用

cx_Freezeでは、生成するexeファイル内のファイルを圧縮することができます。

ファイル圧縮を利用することで、exeファイルのサイズをさらに削減することができます。

以下は、ファイル圧縮を利用するためのcx_Freezeの設定例です。

import sys
from cx_Freeze import setup, Executable
# ファイル圧縮の利用
compress = True
# cx_Freezeの設定
setup(
    name='my_program',
    version='1.0',
    description='My Python Program',
    executables=[Executable('my_program.py')],
    options={'build_exe': {'compress': compress}}
)

上記の例では、compress変数にTrueを指定しています。

これにより、生成するexeファイル内のファイルが圧縮されます。

ただし、ファイルの圧縮には実行速度の低下が伴う場合があるため、パフォーマンスの低下が致命的な問題につながる場合はやめておきましょう。

以上が、cx_Freezeを使用して生成するexeファイルのサイズを軽量化する主な方法です。

不要なモジュールの除外やコンパイルオプションの最適化、ファイル圧縮の利用、リソースの最適化などを組み合わせることで、exeファイルのサイズを効果的に削減することができます。

目次から探す