win32comextのモジュールを使用したスクリプトをpy2exeで実行形式にする
Windows環境でPythonスクリプトを実行形式(exe)にするには、py2exeがよく使用されますよね。
私もよく利用させてもらっています。
で、今回はwin32com(win32拡張モジュールの1つ)の機能を使用したスクリプトを
py2exeでexeにする際のメモです。
たとえば、win32com.directsound.directsoundなどのようなモジュールを使用したスクリプト
をpy2exeでexeにし、実行しようとすると、実行時エラーが発生します。
これは、実行ファイルに必要なファイルが不足しているためです。
win32comモジュールの__init__.pyを見るとなんとなく原因がわかります。
directsoundモジュールは、win32comextに属しているのですが、あたかもwin32comのサブモジュール
であるかのように扱えるようにwin32comの__init__.pyに細工がしてあるわけです。
py2exeはそのあたりの事情は知らないので、パッケージをまとめようとした際に
win32comext中に含まれているモジュールを正しく見つけることができないようです。
これを回避するための方法は、以下のサイトに紹介されています。
私も上記のサイトを参考にsetup.pyを修正したところ、問題が解決しました。
いやはや、勉強になりました。