wxPythonで作ったWin32アプリケーションをpy2exeでひとつのファイルにまとめていたら、あるPCで以下のようなエラーが発生。
File "zipextimporter.pyo", line 82, in load_module
File "wx__init__.pyo", line 45, in <module>
File "zipextimporter.pyo", line 82, in load_module
File "wx_core.pyo", line 4, in <module>
File "zipextimporter.pyo", line 98, in load_module
ImportError: MemoryLoadLibrary failed loading wx_core_.pyd
発生したマシンはWindows XP Professional SP3で、ユーザは管理権限。他のマシンでは発生しなくて、発生原因が不明だったのだけど、「ImportError: MemoryLoadLibrary failed loading wx_core_.pyd」で検索したらそれっぽいのがたくさん…
結構メジャーな問題?
解決策は主にこのフォーラムに。
OpenSubtitles.org // View topic – Solution for MemoryLoadLibrary failed loading wx_core_.pyd
早い話が、msvcp71.dllを持ってきて入れろってことらしい。py2exeを実行したときに一緒に配置されるmsvcr71.dllではなく。
msvcp71.dllが何なのかと、うまく動かない環境ではこのファイルがどうなってるのかは後で調べます。軽く見たところでは、こんなことらしい。
下記のVC++2005再頒布可能パッケージに含まれているのかな…未確認。
ダウンロードの詳細 : Visual C++ 2005 再頒布可能パッケージ (x86)
出所不明だけど、DLLだけ入手するなら以下のサイトから。
DLL-files.com – Download of msvcp71
同じ人の別のマシンで、また別のエラーが出てるらしいんだよなぁ…それも調べないと。
追記:
ProblemsToBeFixed – py2exe.org
ってゆーか、公式にまるっと全部書いてあったYo!
py2exe 0.6.8で発生したので、とりあえず0.6.9にしてみるか…0.6.8で直ってるみたいなことが書いてあるのだけど…
まぁでも解決策はmsvcp71.dllを置けってことなのね。