py2exeで作ったexeがNo moduleと言ってくることについてと解決方法

py2exeで頑張って作ったpyをexeに仕立て上げた。

起動してみたところ、

36

こんなことを言われてすぐに消えてしまった。

テスト時と変わりない環境なので、モジュールが消えたなんてことはまず無いだろう。

少し調べてみると、py2exeはzip形式で圧縮されたeggを開くことができないそうだ。
ここを参考にしました

さらにそこを見ると、有志がpy2exeにeggを読み込ませるためのモジュールを作ってくれていたようなので、ありがたく使わせて貰います。

解決方法

SourceForge.net Repository – [pyopengl] Contents of /OpenGL-ctypes/src/py2exeeggs.py
上からpyファイルをダウンロードし、site-packagesにぶち込む。

"""Script to initialise all eggs in the current directory for py2exe

PyOpenGL can be used with py2exe, but it needs to be used as an
egg (at the moment) and py2exe doesn't have built-in support for 
using eggs.

To use this script, place it somewhere on your path and then do

 import py2exeeggs
 py2exeeggs.loadEggs()
"""

こう書いてある通りに、exeを作るためのpyの中に

 import py2exeeggs
 py2exeeggs.loadEggs()

の2文を付け足す。

これで多分うまく行くと思います。

自分の環境ではうまく行きませんでした。

仕方がないので原始的な方法

できなかったのは気に食わないが、仕方がないので、別の方法を試す。

eggをzipとして開き、モジュールをsite-packagesに入れれば多分動きます。

これで自分は動きました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です