cx_Freezeというもので、Pythonのコードをexeファイルに変換してみました。
今回はその手順などをご紹介します。
インストール
これで導入する模様。
python -m pip install cx_Freeze --upgrade
するとこんな感じでインストールが完了します。
「Successfully ~」が出たら完了です。
Collecting cx_Freeze Downloading cx_Freeze-5.0.2-cp36-cp36m-win_amd64.whl (162kB) 100% |████████████████████████████████| 163kB 1.5MB/s Installing collected packages: cx-Freeze Successfully installed cx-Freeze-5.0.2
exe化するソース
今回は試しに簡単なプログラムをビルドしてみます。
というわけで、Hello worldです。
# -*- coding: utf-8 -*- # main # if __name__ == '__main__': print("Hello exe")
これを「hello.py」で保存しました。
exe化に必要なファイルの作成
次にexe化するのに必要な、「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 = 'hello.py', base = base) # セットアップ setup(name = 'hello', version = '0.1', description = 'converter', executables = [exe])
前述の「hello.py」を起動させるために、Executable()の引数「script」に、「hello.py」を設定しています。
setupの引数のnameもそれにあわせて「hello」にしていますが、そこは実質適当で気がします。
また今回はコンソールアプリなので、「if sys.platform~」の行を削除(コメントアウト)しています。
GUIを作る方は、有効にしてください。
これら以外は、コピペでOKです!
exe化してみる
setup.pyを作成したら、このコマンドを実行。
python setup.py build
なんかズラーっと文字が出て、入力受付に戻ってきたら完了です。
超絶小さいアプリだからか、ぼくの環境では4秒程度で完了しました。
アプリのサイズが大きくなったら、どれだけ時間がかかるのかが気になるところですね。
exe作成後のファイル構成
exe化が完了すると、「build」というフォルダが増えます。
「build」フォルダ内の「exe.win-amd64-3.6」フォルダの中に「hello.exe」が作られます。
その他に色々なファイルが入っていますが、exeに必要なファイルなのでしょう(ちゃんと見てない)。
exeを実行してみる
それではexeを実行してみましょう!
コマンドプロンプトを開き、作られたexeが置いてあるフォルダまで移動します。
そして、exeのファイル名を実行してみましょう!
Hello exe
と表示されれば成功です!
setup関数の引数について
setup関数の引数は、生成されたexeファイルのプロパティに反映されるようです。
nameを「hello_python」に変更して試した結果がこちら。
setup関数に設定した情報がここにセットされていますね!
参考
こちらのサイトを参考にしました。
http://tmlife.net/programming/python/cx_freeze-python-exe.html
大変参考になりました。ありがとうございました。
あとがき
今回は簡単なアプリで試しましたが、今後はもっとちゃんとした処理のあるものをexe化してみたいですね。
CUIではありますが、例えば自動化ツールのようなものであればそれで十分ですし。
「このexeを叩いたら、この作業完了……」
みたいな感じにしていきたいですね……(野望)
まぁ自分用だけなら実行用バッチでもいい気もしますが(笑)