みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

Pythonをcx_Freezeでexeにする (windows編)

Pythonで作成したソフトをホームページなどで公開する場合、スクリプトのまま置いても、使ってくれる人はほとんどいないので、exeにしたり、msiインストーラーなどを作成する必要があります。ここでは、PyQtを用いたPythonプログラムをcx_Freezeを用いてexeやmsiを作成する方法をまとめています。また、ここではwindowsに関して記述していますが、スクリプトはクロスプラットフォームで動作するようになっていますので、MacやLinuxなど他のOSでもそのまま動作するはずです。

環境

みーが使っている環境は以下のとおりですが、バージョンが違っていても適切なものを用いれば同様の方法でうまくいくはずです。また、すべて32bitのバージョンを用いましょう。x64はまだまだ不安定なのです。OSが64bitでも32bitです。

  • Windows 7 64bit Home Premium
  • python3.3
  • PyQt-Py3.3-x86-gpl-4.9.6-1.exe
  • cx_Freeze-4.3.1.win32-py3.3.msi

これらを上から順番にインストールします。

cx_Freezeの使い方

setup.pyを作成

import sys
from cx_Freeze import setup, Executable

includes = ["PyQt4.QtCore","PyQt4.QtGui","re",] 

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(  name = "",
        version = "",
        options = {"build_exe": {"includes": includes}},
        executables = [Executable("main.py", base=base)])

includes で、 含めるべきモジュールを指定します。PyQtの場合は、PyQt4.QtCore のように指定します。

setup関数で、buildが実行されます。nameとversionを指定し、main.pyを実行するように指定します。

  • versionは、msiなどを作成する際に、名前の後につくバージョンに反映されるようです。

build を実行

buildするのは簡単です。cdコマンドでsetup.pyがあるディレクトリに移動して、

python setup.py build

と実行すればよいです。build¥exe.win32-3.3¥???にビルドされます。中にある.exeを実行すればプログラムが正常に動作することを確認しましょう。

msiの作成

msiインストーラーも簡単に作成できます。cdコマンドでsetup.pyがあるディレクトリに移動して、

python setup.py bdist_msi

と実行すればよいです。dist以下に.msiが作成されます。このインストーラーをwindowsで実行すると、C:¥Program Files¥...にbuildした際に作成されるファイルをコピーしてくれるようです。

これ以外にも便利そうなオプションがたくさんあるようです。また後で追記します。

http://cx_freeze.readthedocs.org/en/latest/index.html

(2013.1.21)