私は 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を使用しています。別のプロジェクトを正常に構築しているため、これらの事実だけでこのエラーが発生することはありません。