簡単なPygameアプリをpy2exeで変換してみる

 Pythonを触れたところ、楽しかったのでPygameにも手を出しました。SDLのラッパーのようですが簡単なので楽しいです。
ということで、Python及びPygameを使い始めたので、Pythonをインストールしていない人でも実行が楽なようにpy2exeでウィンドウズの実行形式に変換してみました。その際に行った順序で、出てきたエラーを解決する方法のメモです。Python触れ始めてまだ日が短いので間違っている部分があるかも知れません。



まずはpy2exeの最新版をpy2exe.org経由でダウンロードしました。Pythonのバージョン2.5を使っていたので、sourceforgeから"py2exe-0.6.8.win32-py2.5.exe"をダウンロード。Pythonのインストール先などの変更が特にないので、実行したらひたすらNextでインストール。


インストールが完了したら、早速実行ファイル形式に変換してみます。
変換するpy2exe用スクリプトに関しては、先人の物を使わせていただくということで、Pygame入門から、15.Windowsバイナリに変換してみようのページへ行き、pygame2exe.pyをダウンロードさせていただきました。感謝です。


このスクリプトファイルをpythonで実行します。ダブルクリックでDos窓が開き、Input script directry:と聞かれますので、変換したいファイルがあるディレクトリを指定、その後Input starting script:と開始スクリプト名を聞かれますので、入力します。
そうすると変換が始まります。


しかし、私の場合変換中に、raise ImportError: No module named japaneseとエラーを吐かれてしまいました。どうやらpygame2exe.pyはPython2.4の時のスクリプトなので、JapaneseCodecsを含めるように指定してあるようです。対応バージョンが2.4までしかなく、2.4以降はCJKCodecsに含まれているとのことなので以下の行をコメントアウトしました。

71. args.append('-p')
72. args.append('japanese,encodings') # JapaneseCodecを強制的に含める


無事に実行ファイルがdistフォルダに出来ました。グラフィック素材をコピーして、早速実行をしてみると…

jpeg.dllが見つからなかったため、アプリケーションを実行できませんでした。
libvorbisfile-3.dllが見つからなかったため(略)

エラーが出てしまいました。SDL関係のdllはコピーされていましたが、他のdllが実行ファイルと同じディレクトリ(もしくはSystem32フォルダ)に無いからですね。ということで、Python25\Lib\site-packages\pygame内にある以下の7個のdllを持ってきました。

jpeg.dll, libogg-0.dll, libpng13.dll, libtiff.dll, libvorbis-0.dll, libvorbisfile-3.dll, zlib1.dll



無事に動作完了。
今回は2.4以降のPythonを使用したので、JapaneseCodecsをコメントアウトしたのですが、これによって何か悪いことがある点はあるのでしょうか?日本語名とかをパックするファイルに含めると文字化けでエラーになってしまうとかでしょうかね?