py2exe 用の setup.py スクリプトを作成し、Python GUI アプリケーション用の実行可能ファイルを生成しました。アプリ、w9xopen.exe、MSVCR71.dll を含む多数のファイルが dist ディレクトリにあります。アプリケーションを実行しようとすると、「詳細についてはログファイルを参照してください」というエラー メッセージが表示されます。唯一の問題は、ログ ファイルが空であることです。
私が見た最も近いエラーは「次のモジュールが欠落しているようです」ですが、私が知る限り、これらのモジュールは使用していません (特に、使用していないデータベースのものであるように思われるため)。 Google では、これらは比較的無害な警告であることを示唆しています。
コンソール アプリケーションと wxpython を py2exe で作成してパッケージ化し、両方のアプリケーションをコンパイルして正常に実行しました。私はdaboと呼ばれる新しいpythonツールキットを使用しています.daboはwxpythonモジュールを使用しているため、何が間違っているのかわかりません。明らかにログ ファイルがあまり役に立たないので、どこから問題の調査を開始すればよいでしょうか?
編集1: Python のバージョンは 2.5 です。py2exe は 0.6.8 です。重大なビルド エラーはありませんでした。リストされたパッケージは私が絶対に使用していないものであり、アプリの実行を停止するべきではないため、「次のモジュールが欠落しているようです...」というビットだけでした。実行可能ファイルを実行すると、完全に空のログファイルが作成されました。以前は、私が修正したロケールに関するエラーがありましたが、実行可能ファイルが実行されていなかったため、明らかに何かが間違っていました。setup.py ファイルは、「アプリ ウィザード」を実行して生成された元の setup.py にかなり大きく基づいており、Ed Leafe と他の人が投稿した例を参照しています。はい、ログ ファイルがありますが、使用するものが何も出力されていません。
必要最小限の GUI (いくつかのデフォルト メニュー オプションを備えた空のフレーム) を単純に生成する必要最小限のテスト アプリケーションを作成しました。コード自体はわずか 3 行で、残りはサードパーティのツールキットに含まれています。繰り返しますが、それは(元のアプリと同様に)exeにコンパイルされましたが、単に実行されませんでした。ランタイム ログ ファイルにもエラー出力はありませんでした。
編集 2: 最初のデバッグ目的で「ウィンドウ」から「コンソール」に切り替えることは洞察に満ちていることがわかりました。これで、基本的な実行テスト アプリが完成し、実際のアプリをコンパイルできるようになりました。
テストアプリ:
輸入ダボ アプリ = dabo.dApp() app.start()
テストアプリの setup.py:
OS のインポート システムをインポート 輸入グロブ distutils.core インポート設定から py2exeをインポート dabo.icons のインポート daboDir = os.path.split(dabo.__file__)[0] # dabo アイコンの場所を見つけます。 iconDir = os.path.split(dabo.icons.__file__)[0] iconSubDirs = [] def getIconSubDir(arg, dirname, fnames): ".svn" が dirname および dirname[-1] にない場合 != "\\": アイコン = glob.glob(os.path.join(dirname, "*.png")) アイコンの場合: subdir = (os.path.join("リソース", dirname[len(arg)+1:]), アイコン) iconSubDirs.append(サブディレクトリ) os.path.walk(iconDir、getIconSubDir、iconDir) # ロケール: localeDir = "%s%slocale" % (daboDir, os.sep) ロケール = [] def getLocales (arg、dirname、fnames): ".svn" が dirname および dirname[-1] にない場合 != "\\": mo_files = tuple(glob.glob(os.path.join(dirname, "*.mo"))) mo_files の場合: subdir = os.path.join("dabo.locale", dirname[len(arg)+1:]) locales.append((サブディレクトリ, mo_files)) os.path.walk(localeDir, getLocales, localeDir) data_files=[("リソース", glob.glob(os.path.join(iconDir, "*.ico"))), ("リソース", glob.glob("リソース/*"))] data_files.extend(iconSubDirs) data_files.extend(ロケール) setup(name="basicApp", バージョン='0.01', description="Dabo アプリケーションのテスト", options={"py2exe": { 「圧縮」: 1、「最適化」: 2、「bundle_files」: 1、 "除外": ["Tkconstants","Tkinter","tcl", "_imagingtk", "PIL._imagingtk", "ImageTk"、"PIL.ImageTk"、"FixTk"、"kinterbasdb"、 「MySQLdb」、「数値」、「OpenGL.GL」、「OpenGL.GLUT」、 'dbGadfly', 'email.Generator', 「email.Iterators」、「email.Utils」、「kinterbasdb」、 'numarray', 'pymssql', 'pysqlite2', 'wx.BitmapFromImage'], "includes": ["encodings", "locale", "wx.gizmos","wx.lib.calendar"]}}, zipfile=なし、 windows=[{'script':'basicApp.py'}], data_files=データファイル )