Ich habe PyInstaller nur einmal benutzt, und es funktionierte mit wxPython ziemlich einfach. Ich versuche gerade ein anderes Projekt zu erstellen. Das Projekt funktioniert gut, wenn es über die Befehlszeile ausgeführt wird. Nach dem Erstellen wird jedoch nie das Hauptfenster (wxPython) gestartet.Wie debugge ich einen nicht funktionierenden PyInstaller-Build?
Ich habe die Debug-und Konsolen-Flags in der Build-Spezifikation auf True gesetzt. Ich habe auch die ausführliche Option hinzugefügt ([('v', '', 'OPTION')]
), wie in dem PyInstaller-Handbuch angegeben. Hier ist die Spezifikation:
# -*- mode: python -*- # basedir = os.path.realpath(os.path.dirname(__file__)) basedir = os.getcwd() # Build the icons toc. icons_toc = [] for dir in os.walk(os.path.join(basedir, 'icons')): for icon in dir[2]: icons_toc.append( ( os.path.join('icons', icon), os.path.join(dir[0], icon), 'DATA', ) ) a = Analysis( ['application.py'], pathex=['.', './lib', '../broadpy/lib', '../broadpy/vendor'], hiddenimports=[], hookspath=None ) a.datas += icons_toc pyz = PYZ(a.pure) exe = EXE( pyz, a.scripts + [('v', '', 'OPTION')], a.binaries, a.zipfiles, a.datas, name=os.path.join( 'dist', 'Address cleaner.exe' ), debug=True, strip=None, upx=True, console=True ) app = BUNDLE( exe, name=os.path.join('dist', 'Address cleaner.app') )
Nun, wenn ich die integrierte ausführbare Datei ausführen, bekomme ich diese Ausgabe:
C:\Users\tomas\Dropbox\Broadnet\address_cleaner>"C:\Users\tomas\Dropbox\Broadnet\address_cleaner\dist\Address cleaner.exe" _MEIPASS2 is NULL archivename is C:\Users\tomas\Dropbox\Broadnet\address_cleaner\dist\Address cleaner.exe Extracting binaries Executing self as child with Setting up to run child Creating child process Waiting for child process to finish... _MEIPASS2 is C:/Users/tomas/AppData/Local/Temp/_MEI30762/ archivename is C:\Users\tomas\Dropbox\Broadnet\address_cleaner\dist\Address cleaner.exe Already in the child - running! manifestpath: C:/Users/tomas/AppData/Local/Temp/_MEI30762/Address cleaner.exe.manifest Activation context created Activation context activated C:/Users/tomas/AppData/Local/Temp/_MEI30762/python27.dll Manipulating evironment 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 # installing zipimport hook import zipimport # builtin # installed zipimport hook importing modules from CArchive import marshal # builtin extracted iu import imp # builtin import nt # builtin extracted struct import _struct # builtin extracted archive Installing import hooks out00-PYZ.pyz Running scripts import zlib # builtin import errno # builtin import _weakref # builtin import _codecs # builtin import _sre # builtin import _collections # builtin import operator # builtin import itertools # builtin import _bisect # builtin import _heapq # builtin import thread # builtin import math # builtin import binascii # builtin import _hashlib # dynamically loaded from C:\Users\tomas\AppData\Local\Temp\_MEI30762\_hashlib.pyd import _random # builtin import cStringIO # builtin Traceback (most recent call last): File "", line 65, in File "C:\Users\tomas\Downloads\pyinstaller-2.0\PyInstaller\loader\iu.py", line 386, in importHook File "C:\Users\tomas\Downloads\pyinstaller-2.0\PyInstaller\loader\iu.py", line 480, in doimport File "C:\Users\tomas\Dropbox\Broadnet\address_cleaner\build\pyi.win32\buildspec\out00-PYZ.pyz\win32com", line 5, in File "C:\Users\tomas\Downloads\pyinstaller-2.0\PyInstaller\loader\iu.py", line 386, in importHook File "C:\Users\tomas\Downloads\pyinstaller-2.0\PyInstaller\loader\iu.py", line 459, in doimport File "C:\Users\tomas\Downloads\pyinstaller-2.0\PyInstaller\loader\iu.py", line 248, in getmod File "C:\Users\tomas\Downloads\pyinstaller-2.0\PyInstaller\loader\iu.py", line 105, in getmod ImportError: DLL load failed: The specified module could not be found. RC: -1 from pyi_rth_win32comgenpy OK. Deactivating activation context Releasing activation context Done # clear __builtin__._ # clear sys.path # clear sys.argv # clear sys.ps1 # clear sys.ps2 # clear sys.exitfunc # clear sys.exc_type # clear sys.exc_value # clear sys.exc_traceback # clear sys.last_type # clear sys.last_value # clear sys.last_traceback # clear sys.path_hooks # clear sys.path_importer_cache # clear sys.meta_path # clear sys.flags # clear sys.float_info # restore sys.stdin # restore sys.stdout # restore sys.stderr # cleanup __main__ # cleanup[1] cStringIO # cleanup[1] __future__ # cleanup[1] _collections # cleanup[1] encodings # cleanup[1] site # cleanup[1] atexit # cleanup[1] shutil # cleanup[1] _heapq # cleanup[1] _weakref # cleanup[1] abc # cleanup[1] _bisect # cleanup[1] _weakrefset # cleanup[1] tempfile # cleanup[1] binascii # cleanup[1] sre_constants # cleanup[1] collections # cleanup[1] _codecs # cleanup[1] _warnings # cleanup[1] math # cleanup[1] operator # cleanup[1] fnmatch # cleanup[1] codecs # cleanup[1] re # cleanup[1] _struct # cleanup[1] thread # cleanup[1] keyword # cleanup[1] signal # cleanup[1] random # cleanup[1] itertools # cleanup[1] encodings.aliases # cleanup[1] exceptions # cleanup[1] heapq # cleanup[1] sre_compile # cleanup[1] _sre # cleanup[1] _random # cleanup[1] hashlib # cleanup[1] bisect # cleanup[1] sre_parse # cleanup[1] _hashlib # cleanup[2] copy_reg # cleanup[2] iu # cleanup[2] os.path # cleanup[2] archive # cleanup[2] struct # cleanup[2] errno # cleanup[2] imp # cleanup[2] _abcoll # cleanup[2] ntpath # cleanup[2] nt # cleanup[2] genericpath # cleanup[2] stat # cleanup[2] zipimport # cleanup[2] warnings # cleanup[2] UserDict # cleanup[2] types # cleanup[2] zlib # cleanup[2] linecache # cleanup[2] os # cleanup[2] marshal # cleanup sys # cleanup __builtin__ # cleanup ints: 41 unfreed ints # cleanup floats: 31 unfreed floats Back to parent... Freeing status for C:\Users\tomas\Dropbox\Broadnet\address_cleaner\dist\Address cleaner.exe
So, jetzt sehe ich, gibt es eine erhöhte Ausnahme von iu.py, aber ich habe noch keine Idee warum. Ich finde es auch ziemlich mysteriös, dass eine Python-Datei in meinem Downloads/py-installer-Ordner ausgeführt wird, selbst wenn ich diesen Ordner lösche.
Also zusammenzufassen - welche Schritte muss ich unternehmen, um genau herauszufinden, warum die Anwendung beim Start abstürzt?
Ich verwende PyInstaller 2.0 mit Python 2.7.3 auf Windows 8. Keiner dieser Tatsachen allein verursacht diesen Fehler, wie ich erfolgreich ein anderes Projekt baute.
Ich hatte das gleiche Problem, danke. –
Was mein Problem behoben hat, bestand darin, ein pyd-Modul (vor allem für pcapy) auf WinXP neu zu kompilieren und es in meine Windows 7-Python-Installation zu kopieren. Jetzt kann meine pyinstaller exe, die ich auf Windows 7 baue auch auf Windows XP UND Windows 7 –
Sie können in der Lage sein zu helfen, mein [Problem] zu lösen (http://stackoverflow.com/questions/41073132/pyinstaller-app-is-accessing -txt-Dateien-aber-nicht-schreiben-an-sie-funktioniert-vor-ap). – Phillip