私は PyInstaller を以前に一度だけ使用したことがありますが、wxPython では非常に簡単に機能しました。私は現在、別のプロジェクトを構築しようとしています。コマンドラインから実行すると、プロジェクトはうまく機能します。ただし、ビルド後、メイン ウィンドウ (wxPython) が起動することはありません。
ビルド仕様でデバッグ フラグとコンソール フラグを True に設定しました。[('v', '', 'OPTION')]PyInstaller マニュアルで指定されているように、冗長オプション ( ) も追加しました。仕様は次のとおりです。
# -*- モード: python -*-
# basedir = os.path.realpath(os.path.dirname(__file__))
basedir = os.getcwd()
# アイコンをビルドします。
icons_toc = []
os.walk(os.path.join(basedir, 'icons')) のディレクトリの場合:
dir[2] のアイコンの場合:
icons_toc.append(
(
os.path.join('アイコン', アイコン),
os.path.join(dir[0], アイコン),
'データ'、
)
)
a = 分析(
['application.py'],
pathex=['.', './lib', '../broadpy/lib', '../broadpy/vendor'],
hiddenimports=[],
hookspath=なし
)
a.datas += icons_toc
pyz = PYZ(純粋)
exe = EXE(
ピズ、
a.scripts + [('v', '', 'OPTION')],
a.バイナリ、
a.zipファイル、
a.データ、
name=os.path.join(
「dist」、「アドレスクリーナー.exe」
)、
デバッグ=真、
ストリップ=なし、
upx=真、
コンソール=True
)
アプリ = バンドル(
EXE、
name=os.path.join('dist', 'Addresscleaner.app')
)
ビルドした実行可能ファイルを実行すると、次の出力が得られます。
C:\Users\tomas\Dropbox\Broadnet\address_cleaner>"C:\Users\tomas\Dropbox\Broadnet\address_cleaner\dist\Addresscleaner.exe" _MEIPASS2 は NULL です アーカイブ名は C:\Users\tomas\Dropbox\Broadnet\address_cleaner\dist\Addresscleaner.exe です。 バイナリの抽出 子を実行する設定で自己を子として実行する 子プロセスの作成 子プロセスの終了を待っています... _MEIPASS2 は C:/Users/tomas/AppData/Local/Temp/_MEI30762/ です アーカイブ名は C:\Users\tomas\Dropbox\Broadnet\address_cleaner\dist\Addresscleaner.exe です。 すでに子供の中にいる - 走っている! マニフェストパス: C:/Users/tomas/AppData/Local/Temp/_MEI30762/Addresscleaner.exe.manifest アクティベーション コンテキストが作成されました アクティブ化コンテキストがアクティブ化されました C:/Users/tomas/AppData/Local/Temp/_MEI30762/python27.dll 環境操作 PYTHONPATH=C:/Users/tomas/AppData/Local/Temp/_MEI30762;C:/Users/tomas/Dropbox/Broadnet/address_cleaner/dist PYTHONHOME=C:/Users/tomas/AppData/Local/Temp/_MEI30762/ v # zipimport フックのインストール import zipimport # ビルトイン # zipimport フックをインストール CArchive からのモジュールのインポート import marshal # ビルトイン 抽出した import imp # ビルトイン import nt # ビルトイン 抽出された構造体 import _struct # ビルトイン 抽出されたアーカイブ インポートフックのインストール out00-PYZ.pyz スクリプトの実行 import zlib # ビルトイン import errno # ビルトイン import _weakref # ビルトイン import _codecs # ビルトイン import _sre # ビルトイン import _collections #ビルトイン import operator # ビルトイン import itertools # ビルトイン import _bisect # ビルトイン import _heapq # ビルトイン インポート スレッド # ビルトイン import math # ビルトイン import binascii # ビルトイン import _hashlib # C:\Users\tomas\AppData\Local\Temp\_MEI30762\_hashlib.pyd から動的にロード import _random #ビルトイン import cStringIO # ビルトイン トレースバック (最新の呼び出しが最後): ファイル ""、65 行目、 importHook のファイル「C:\Users\tomas\Downloads\pyinstaller-2.0\PyInstaller\loader\iu.py」、386 行目 doimport のファイル「C:\Users\tomas\Downloads\pyinstaller-2.0\PyInstaller\loader\iu.py」の 480 行目 ファイル「C:\Users\tomas\Dropbox\Broadnet\address_cleaner\build\pyi.win32\buildspec\out00-PYZ.pyz\win32com」の 5 行目 importHook のファイル「C:\Users\tomas\Downloads\pyinstaller-2.0\PyInstaller\loader\iu.py」、386 行目 doimport のファイル「C:\Users\tomas\Downloads\pyinstaller-2.0\PyInstaller\loader\iu.py」の 459 行目 getmod のファイル「C:\Users\tomas\Downloads\pyinstaller-2.0\PyInstaller\loader\iu.py」の 248 行目 getmod のファイル「C:\Users\tomas\Downloads\pyinstaller-2.0\PyInstaller\loader\iu.py」の 105 行目 ImportError: DLL の読み込みに失敗しました: 指定されたモジュールが見つかりませんでした。 RC: pyi_rth_win32comgenpy から -1 わかった。 アクティベーション コンテキストの非アクティブ化 アクティベーション コンテキストの解放 終わり # __ビルトイン__._をクリア # sys.path をクリア # sys.argv をクリア # sys.ps1 をクリア # sys.ps2 をクリア # sys.exitfunc をクリア # sys.exc_type をクリア # sys.exc_value をクリア # sys.exc_traceback をクリア # sys.last_type をクリア # sys.last_value をクリア # sys.last_traceback をクリア # sys.path_hooks をクリア # sys.path_importer_cache をクリア # sys.meta_path をクリア # sys.flags をクリア # sys.float_info をクリア # sys.stdin を復元 # sys.stdout を復元 # sys.stderr を復元 # クリーンアップ __main__ # cleanup[1] cStringIO # クリーンアップ[1] __未来__ # クリーンアップ[1] _collections # クリーンアップ[1] エンコーディング # クリーンアップ[1] サイト # クリーンアップ[1] atexit # cleanup[1] shutil # クリーンアップ[1] _heapq # クリーンアップ[1] _weakref # クリーンアップ[1] abc # クリーンアップ[1] _bisect # クリーンアップ[1] _weakrefset # cleanup[1] 一時ファイル # クリーンアップ[1] binascii # cleanup[1] sre_constants # クリーンアップ[1] コレクション # クリーンアップ[1] _codecs # cleanup[1] _warnings # クリーンアップ[1] 数学 # cleanup[1] 演算子 # cleanup[1] fnmatch # cleanup[1] コーデック # クリーンアップ[1] re # クリーンアップ[1] _struct # クリーンアップ [1] スレッド # cleanup[1] キーワード # cleanup[1] シグナル # クリーンアップ[1] ランダム # クリーンアップ[1] itertools # cleanup[1] encodings.aliases # クリーンアップ[1] 例外 # cleanup[1] heapq # クリーンアップ[1] sre_compile # クリーンアップ[1] _sre # クリーンアップ[1] _random # クリーンアップ[1] ハッシュライブラリ # クリーンアップ[1] 二分 # クリーンアップ[1] sre_parse # クリーンアップ[1] _hashlib # cleanup[2] copy_reg # クリーンアップ[2] iu # cleanup[2] os.path # クリーンアップ[2] アーカイブ # cleanup[2] 構造体 # クリーンアップ[2] errno # クリーンアップ[2] インプ # クリーンアップ[2] _abcoll # cleanup[2] ntpath # クリーンアップ [2] nt # cleanup[2] ジェネリックパス # クリーンアップ[2] 統計 # クリーンアップ[2] zipimport # クリーンアップ[2] 警告 # cleanup[2] UserDict # クリーンアップ[2] タイプ # クリーンアップ[2] zlib # cleanup[2] ラインキャッシュ # クリーンアップ[2] os # クリーンアップ[2] マーシャル # システムのクリーンアップ # クリーンアップ __builtin__ # クリーンアップ整数: 41 個の解放されていない整数 # クリーンアップフロート: 31 個の解放されていないフロート 親に戻る... C:\Users\tomas\Dropbox\Broadnet\address_cleaner\dist\Addresscleaner.exe の解放ステータス
そのため、iu.py から例外が発生したことがわかりましたが、その理由はまだわかりません。また、Downloads/py-installer フォルダーを削除しても、そのフォルダー内の python ファイルが実行されるのは非常に不思議です。
要約すると、起動時にアプリケーションがクラッシュする理由を正確に把握するには、どのような手順を実行する必要がありますか?
Windows 8でPython 2.7.3でPyInstaller 2.0を使用しています。別のプロジェクトを正常に構築しているため、これらの事実だけでこのエラーが発生することはありません。