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=データファイル
)