Pythonファイルをexe化する方法::cx_Freezeの使い方を紹介します

2021年6月19日

前回記事では PyInstaller の使い方を紹介しました。

PyInstaller の場合、exe化が成功してもソフトが立ち上がらないことがあります。

今回紹介する cx_Freeze ではほぼ立ち上がります。

ただし、PyInstaller に比べるとexe化のための setup.py を作る必要があり、その分手間が掛かります。

ですが、PyInstaller で exe化できない場合は試してみる価値があります。

是非参考にしてください。

特徴比較

前回記事でも書きましたが、再度掲載します。

Pyinstaller と cx_Freeze の特徴をまとめると以下となります。

PyInstallercx_Freeze
exe化の手間
exeファイル
のサイズ

(数十MB~数百MB)

(数十KB)
生成される
全ファイル
サイズ
小~中
(数十MB~数百MB)
中~大
(数百MB~数GB)
起動時間
(数秒~数十秒)

(コンマ数秒)
その他exe化できても立ち上がらない場合があるexe化できればほぼ立ち上がる

cx_Freeze でexe化したファイルは起動が爆速です。

コンマ数秒で立ち上がります。

ソフト使用時のストレスが劇的に軽減され、とても使いやすいです。

cx_Freeze の使い方

cx_Freeze をインストールしていない方は、コマンドプロンプトに以下のように入力し、インストールしてください。

> pip install cx_Freeze --upgrade

次に、Pythonで setup.py ファイルを作成します。

コードは以下です。

# coding: utf-8
# cx_Freeze 用セットアップファイル
 
import sys
from cx_Freeze import setup, Executable
 
base = None

# GUI=有効, CUI=無効 にする
if sys.platform == 'win32' : base = 'Win32GUI'
 
# exe にしたい python ファイルを指定
exe = Executable(script = 'tomo.py',
                 base = base, icon='xxx.ico')
 
# セットアップ
setup(name = 'Image_Viewer',
      version = '0.1',
      description = 'Image_Viewer',
      executables = [exe])

変更箇所

exe化したいPythonファイル名をscript = ' ' の中に記載します。

また、アイコンを付けたい場合は、icon = ' ' の中に記載します。

setup( ) 内の name = ' ' の中にexe化した際のソフト名を記載します。

version を設定したい場合は、version = ' ' の中に数字を記載します。

description = ' ' の中にソフトの説明を記載します。

上記の変更が完了したら、setup.py を上書き保存します。

exe化準備

先ほど作った setup.py と exe化したい Pythonファイル(仮に、tomo.pyとします)を所定のフォルダに入れます。

例として、デスクトップに Test というフォルダを作ったとします。

このフォルダの中に、setup.py ファイルと tomo.py ファイルを入れます。

また、アイコンを設定したい場合は、xxx.ico ファイルも Test フォルダに入れておきます。

今は仮に tanjiro.ico ファイルを入れておきます。

次に、コマンドプロンプト画面で上記ファイルが入っているフォルダの場所に移動します(ディレクトリを変えます)。

コマンドプロンプトに以下のように入力しエンターを押してください。

> cd C:\Users\ユーザー名\Desktop\Test

今回はデスクトップにTestというフォルダを作ったので、上記のような記載になります。

ちなみに、¥ユーザーと書かれた部分は使用しているパソコンによって異なるので各自の環境に合わせ修正してください。

私の場合は以下のようになります。

この状態でエンターを押してください。

すると以下の画面になります。ディレクトリが先ほど作成したTestフォルダに移動しました。

ここで、以下のように入力しエンターを押します。

すると、Testフォルダ内にbuildというフォルダができます。

このbuildフォルダの中にexe化されたファイルができます。

exe化が成功するとコマンドプロンプトに以下のように表示されます。

最終的にTestフォルダ内は以下のような構成になります。

今回作成したexeファイルは25KBなので、exeファイルだけで比較するとexe化前の tomo.py ファイルは1KBですからファイルサイズはたった25倍です。

ですが、Testフォルダ全体の容量は118MBになるため、exe化前のファイル(setup.py、tomo.py、tanjiro.ico:合計10KB)と比べ、ファイルサイズが約10万倍になりました。

Testフォルダ全体の容量は増えますが、exe化のメリットは大きいです。

  • ダブルクリックで簡単にソフトが開ける
  • Pythonがインストールされていないパソコン環境でもexeファイルは使える
  • 自分の作ったソフトを気軽に配布できる

PyInstaller でexe化がうまくいかなかった方は、一度試してみてください。

まとめ

  • cx_Freeze でexe化したファイルは起動が爆速。
  • cx_Freeze でexe化する場合、setup.pyファイルを作る必要がある。
  • ファイルサイズは、exeファイルのみで比較すると元のpythonファイルの数倍~数十倍だが、生成されるファイルの全容量を比較すると数十万倍になる場合がある。
  • cx_Freeze の場合、exe化したファイルはほぼ開ける。