2011/04/23

Py2exeを使うならPython2.5系をお勧めする理由

”このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。アプリケーションを再度インストールすることにより問題が解決する場合があります。”

Pythonで作成したスクリプトを実行するためにはPythonの実行環境が必要です。
せっかくPythonで簡単にコーディングできても、実行環境を用意する手間を考えたり社内規定的なモノでインストールが出来なかったりするとせっかく生産性の高いPythonの意味がないと。

でも大丈夫。
Py2exeというソフトを通してあげるとPythonのスクリプトをWindowsで直接実行可能なexe形式に変換してくれます。もちろん動かすPCにPythonをインストールする必要はありません。

py2exe - Browse /py2exe/0.6.9 at SourceForge.net
コーディングしたPythonの環境と同じバージョンをダウンロードしてください。

setup.pyファイルを書く必要ありますが、コンパイルというかexeに変換してやれば自動でimportしているモジュールも書き出されて利用することが出来ます。
素晴らしいですね。

で、それをWindowsに持って行って実行したら上のエラーが。

エラーが起きる原因は非常に単純で解決するにはVisual C++ 2008 再頒布可能パッケージ (x86) を実行するPCにインストールしておけばOKです。
が、せっかくPythonを実行形式に変換しておきながら動かすPCにVC++ 2008のランタイムを入れるのはナンセンス…

解決する方法はございます。

Python2.5系でコーディングすること。

というのもPy2exeで書き出されたファイルを実行する際に動的にPythonをコンパイルされているようなのでその際にPython2.6以降はVC++ 2008をコンパイラとして利用していることが原因。
なのでPython2.5系ならVC++ 2003をコンパイラとして利用しているので実行ファイルと同じディレクトリにMSVCR72.dllがあれば実行できます。
(VC++ 2005以降はOS側に問い合わせに行くみたい)


実際にPython2.5系でコーディングしたモノをPy2exeで実行ファイルに変換すると自動でMSVCR72.dllが作成されます。なのでフォルダを丸っと圧縮して利用したいPCに持って行けば動作します。

補足しておくとこのエラーが出るのは素のWindowsXP/Windows Server 2003です。
さらに言えばアンチウイルスソフトなどでもこのVC++ 2008ランタイムはよく使われているので、そういうモノも入っていない可能のあるPCということです。

簡単な処理からWindowアプリまで、Pythonライフを楽しんでください;p