py2exeでexeファイルを作る

2010/3/23 python2.6, Windows Vista上で動作確認。

Distutilsは、開発者がPythonモジュールを配布・インストールするため環境構築を行うパーッケージです。
Distutilsの拡張版として提供されているpy2exeというモジュールを使って、Distutilsの従来のコマンド群にpy2exeというコマンドを新たに追加することができます。これを使うとpythonからWindows実行形式ファイル(.exe)を作成することができるみたいです。

py2exeの入手とインストール

公式サイトhttp://www.py2exe.org/
"Starting Points
Download py2exe from SourceForge"
から入手できます。Windowsインストーラをダウンロード:py2exe-0.6.9.win32-py2.6.exe
インストールは「次へ」ボタンをクリックするだけで簡単に行うことができます。ちなみに、py2exeはLib\site-packages内にインストールされています。例えばPythonをC:\Python26にインストールしたなら、C:\Python26\Lib\site-packages\py2exeが存在していればインストールは成功しています。

Hello.pyの作成

下のように実行形式に変換したい.pyファイルを用意します。

print "Hello World!"

setupファイルの作成

Hello.pyと同じディレクトリにsetup.pyを作成します。
py2exeを利用するには、以下のようにsetup.pyを作成してDistutilsやpy2exeに行うべきことを教えてあげる必要があります。
py2exeをインポートすると、Distutilsに新たなコマンドとしてpy2exeを追加することができます。

from distutils.core import setup
import py2exe

setup(console=['hello.py'])

distutilsのコマンドの中で必要なものはsetup関数なので、setupを必ずインポートします。
一度Distutilsを起動したらpy2exeも起動しましょう。

setupファイルの起動

setupを起動して、hello.pyをエントリーポイントとするコンソールアプリケーションを作成することをDistutilsに伝えます。
コマンドプロンプトを開いて、hello.pyとsetup.pyが入っているディレクトリに移動します。(例えばC:\workspace)
python setup.py py2exeを実行します。(ちなみに、\は¥マークだと思ってください。)


C:\workspace>python setup.py py2exe

少し処理が続きますので完了するまで待ちましょう。binary dependenciesに関するメッセージが出て終了するみたいです。
表示されるdllのリストは環境依存だと思います。


. *** binary dependencies ***
Your executable(s) also depend on these dlls which are not included,
you may or may not need to distribute them.

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.


USER32.dll - C:\Windows\system32\USER32.dll
SHELL32.dll - C:\Windows\system32\SHELL32.dll
KERNEL32.dll - C:\Windows\system32\KERNEL32.dll

C:\workspace>にbuildとdistディレクトリができています。
カレントディレクトリをdistにします。
C:\workspace>cd dist
dist内にHello.exeが作成されているので、Hello.exeを実行して終了です。
C:\workspace\dist>Hello.exe
Hello World!