さて、前回はWxpythonのインストールについてでしたが、今回は作ったスクリプトをEXEに変換する方法を書きたいと思います。これでArcpyをGUIで動かすことができますね。変換にはpy2exeというライブラリを使用します。
■py2exeのダウンロード
下記リンクよりpy2exeをダウンロードしましょう。
http://sourceforge.net/projects/py2exe/files/py2exe/
ダウンロード終了後、インストールを行います。全てデフォルト設定で構いません。
■exe化
exe化にあたり、必要なものは下記4つとなります。
- py2exe (変換ライブラリ)
- sample.py(変換元ソースファイル、ファイル名は任意)
- setup.py(セットアップスクリプト、ファイル名は任意)
1つ目は問題ないと思います。2つ目は上記でクリア。3つ目と4つ目について書きます。
まずはソースファイルです。
■ファイル名:sample.py
# -*- coding: utf-8 -*- import wx class MyForm(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, wx.ID_ANY, title='My Form') self.panel = wx.Panel(self, wx.ID_ANY) if __name__ == '__main__': app = wx.PySimpleApp() frame = MyForm().Show() app.MainLoop()
実行するとフォームが立ち上がるだけの単純なプログラムです。
次はセットアップスクリプトです。
■ファイル名:setup.py
# -*- coding: utf-8 -*- from distutils.core import setup import py2exe option = { "compressed" : 1 , "optimize" : 2 , "bundle_files" : 3 } setup( options = { "py2exe" : option }, windows = [ {"script" : "sample.py"} ], zipfile = None )
注意が必要なのは「bundle_files」です。64bitの場合はここを1、2にすると動きません(うーん、なぜなのか)。「bundle_files」=1がランタイムdllを含めてということ。2がその逆です。3は何なのだろうか・・・ちなみに他は
- 「compressed」 出力を圧縮するかしないか
- 「optimize」 最適化するかしないか
です。また、GUIの場合は「windows」という指定が必要です。そうでない場合は「console」と指定してください。
これで準備完了です。それではEXE化を始めましょう。
- 上記2ファイルを適当なディレクトリに配置
- コマンドプロンプトで上記のディレクトリにCD
- python setup.py py2exe を実行
実行するとこんなメッセージが出ますが、無視してかまいません。
Make sure you have the license if you distribute any of them, and
make sure you don't distribute files belonging to the operating system.
ole32.dll - C:\Windows\system32\ole32.dll
OLEAUT32.dll - C:\Windows\system32\OLEAUT32.dll
USER32.dll - C:\Windows\system32\USER32.dll
COMCTL32.dll - C:\Windows\system32\COMCTL32.dll
SHELL32.dll - C:\Windows\system32\SHELL32.dll
MSVCP90.dll - C:\Windows\system32\MSVCP90.dll
WINMM.dll - C:\Windows\system32\WINMM.dll
WSOCK32.dll - C:\Windows\system32\WSOCK32.dll
COMDLG32.dll - C:\Windows\system32\COMDLG32.dll
ADVAPI32.dll - C:\Windows\system32\ADVAPI32.dll
WS2_32.dll - C:\Windows\system32\WS2_32.dll
WINSPOOL.DRV - C:\Windows\system32\WINSPOOL.DRV
GDI32.dll - C:\Windows\system32\GDI32.dll
KERNEL32.dll - C:\Windows\system32\KERNEL32.dll
RPCRT4.dll - C:\Windows\system32\RPCRT4.dll
対象のディレクトリに「build」「dist」というフォルダが作成されたと思います。「dist」フォルダにEXEが格納されています。
EXEを実行してみます。
成功しました。これでEXE化の完了です!