2015-10-23 14 views
10

ich py2app 0.9 auf Mac OSX Yosemite 10.10.1 bin mit Python 3.4 von der Anakonda Verteilung läuft und mit Tcl 8.5.py2app baut ok aber app irgendwie „_tkinter.TclError“ (und keine Fehlermeldung!)

In früheren Versuchen, würde die Build fehlschlagen, aber schnelle Suche ergab Lösungen für diese Probleme (dh einschließlich 'Pakete': ['tkinter', 'matplotlib'] in OPTIONS in setup.py und das Ändern der Leitung 49 von MachOGraph.py: loader -> loader_path)

nun beendet py2app den Build, und in Alias-Modus meine App-Funktionen ausgeführt wird, aber wenn ich im normalen Modus (python setup.pypy2app) die resultierende App lässt sich nicht öffnen und die Konsole zeigt folgende Zurückverfolgungs bauen:

Traceback (m ie meisten recent call last): Datei "/Users/ryankeenan/Desktop/fishing/gui_test/dist/deani.app/Contents/Resources/ Boot Py", Linie 355, in _run() Datei „/ Benutzer /ryankeenan/Desktop/fishing/gui_test/dist/deani.app/Contents/Resources/ boot .py ", Zeile 336, in _run exec (kompilieren (Quelle, Pfad, 'exec'), globals(), globals()) Datei "/Users/ryankeenan/Desktop/fishing/gui_test/dist/deani.app/Contents/Resources/deani.py", Zeile 731, in app = fishingapp() Datei "/ Benutzer/ryankeenan /Desktop/fishing/gui_test/dist/deani.app/Contents/Resources/deani.py ", Linie 536, in init tk.Tk. init (self, * args, ** kwargs) Datei „/Users/ryankeenan/Desktop/fishing/gui_test/dist/deani.app/Contents/Resources/lib/python3.4/tkinter/ init Py “ Linie 1851 in init self.tk = _tkinter.create (screen, basename, classname, interaktiv, wantobjects, useTk, sync, Verwendung) _tkinter.TclError

Die frustrierende Sache ist, dass Es wird keine Fehlermeldung für "_tkinter.TclError" ausgegeben. Ich habe ziemlich viel gesucht und konnte keine Lösungen oder Replikationen dieses Problems finden. Ich habe versucht, verschiedene tkinter-basierte Apps zu erstellen, und alle scheitern auf die gleiche Weise.

Dies geschieht beim ersten Aufruf von tk.Tk. init (selbst, * args, ** kwargs) in meinem Code.

Meine setup.py-Datei sieht wie folgt aus:

from setuptools import setup 
APP = ['deani.py'] 
DATA_FILES = [] 
OPTIONS = {'packages': ['tkinter','matplotlib'],'argv_emulation': True} 
setup( 
    app=APP, 
    data_files=DATA_FILES, 
    options={'py2app': OPTIONS},  
    setup_requires=['py2app'],) 

Antwort

0

ich dieses Problem hatte und entdeckt, dass es zu Konflikten zwischen den Versionen von Tcl/Tk in der /Library/Frameworks zurückzuführen war. Überprüfen Sie die Ausgabe des Builds (stellen Sie sicher, dass Sie das alte Build zuerst löschen) für Verweise auf verschiedene Versionen von tcl/tk. Ich fand heraus, dass meine aktuelle Version von tcl/tk 8.6 war, mit der py2app verlinkt war, aber zur gleichen Zeit kopierte py2app Dateien von tcl/tk 8.5. Ich habe das Problem gelöst, indem ich 8.5 aus `/Library/Frameworks/(Tcl/Tk).framework/Versions entfernt habe.

HINWEIS: Ich würde nicht empfehlen, eine Version zu entfernen, es sei denn, Sie sehen das Problem in der Build-Ausgabe und wissen, dass nichts anderes (das Sie interessieren) von dieser Version abhängt.

Dies war jedoch nicht mein einziger Fehler, denn als ich die alte Version löschte, entdeckte ich einen neuen _tkinter.Tcl Fehler, der auf einen Fehler in meinem Code hinwies. Wenn Sie das Traceback anzeigen möchten, ohne zur Konsole zu gehen, schlage ich vor, eine try/except-Anweisung um Ihren Startcode zu legen, die das Traceback auf eine Datei ausgibt. Zum Beispiel:

 import sys, time, traceback  
     try: 
      run()#Your opening code goes here 
     except: 
      with open('/Path/to/somewhere/tb.txt','a') as file: 
       y,mn,d,h,m,s,a,b,c = time.localtime() 
       file.write("==================="+str(mn)+'/'+str(d)+' '+ 
          str(h)+':'+str(m)+':'+str(s)+ 
          "=====================\n") 
       traceback.print_exc(file=file) 

Hoffe das half.