2015-10-23 4 views
10

Я использую py2app 0.9 на Mac OSX Yosemite 10.10.1Python 3.4 работает от распределения анаконды и Tcl 8.5.py2app строит хорошо, но приложение терпит неудачу с «_tkinter.TclError» (и сообщение об ошибке!)

В более ранних попытках, построить не удастся, но быстрый поиск показал решение этих проблем (т.е. включая «пакеты»: ['tkinter', 'matplotlib'] в OPTIONS в setup.py, и изменение линии 49 из MachOGraph.py: погрузчика -> loader_path)

Теперь py2app заканчивает сборку, и работает в режиме псевдонима мои функции приложения, но когда я построю в обычном режиме (питона setup.pypy2app) в результате приложение не открывается, а консоль показывает следующее отслеживающий:

Traceback (м ост последний вызов последнего): Файл " /Users/ryankeenan/Desktop/fishing/gui_test/dist/deani.app/Contents/Resources/ загрузки .py", линии 355, в _run() Файл «/ Users /ryankeenan/Desktop/fishing/gui_test/dist/deani.app/Contents/Desktop/deani.app/Contents/Desktop/ boot .py ", строка 336, в _run exec (компиляция (источник, путь, 'exec'), globals(), globals()) Файл "/Users/ryankeenan/Desktop/fishing/gui_test/dist/deani.app/Contents/Resources/deani.py", строка 731, в app = fishingapp() Файл "/ Пользователи/ryankeenan /Desktop/fishing/gui_test/dist/deani.app/Contents/Resources/deani.py ", строка 536, в init tk.Tk. INIT (я, * арг, ** kwargs) Файл «/Users/ryankeenan/Desktop/fishing/gui_test/dist/deani.app/Contents/Resources/lib/python3.4/tkinter/ инициализации .py », линии 1851, в инициализации self.tk = _tkinter.create (ScreenName, Basename, имя класса, интерактивный, wantobjects, useTk, синхронизация, использование) _tkinter.TclError

расстраивает дело в том, что он не выводит никаких сообщений об ошибке «_tkinter.TclError». Я искал совсем немного и не нашел решений или реплик этой проблемы. Я попытался создать различные приложения на базе tkinter, и все они не работают одинаково.

Это происходит при первом вызове tk.Tk. init (self, * args, ** kwargs) в моем коде.

Моего setup.py файл выглядит следующим образом:

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'],) 

ответ

0

Я с этой проблемой, и обнаружил, что это было из-за противоречивые версии Tcl/Tk в /Library/Frameworks. Проверьте выходные данные сборки (обязательно удалите старую сборку сначала) для ссылок на разные версии tcl/tk. Я обнаружил, что моя текущая версия tcl/tk была 8.6, к которой ссылалась py2app, но в то же время py2app копировал файлы из tcl/tk 8.5. Я решил проблему, удалив 8.5 из `/Library/Frameworks/(Tcl/Tk).framework/Versions.

ПРИМЕЧАНИЕ. Я бы не рекомендовал удалять версию, если вы не видите проблему в выходе сборки, и знаете, что ничто другое (что вас беспокоит) зависит от этой версии.

Однако это была не моя единственная ошибка, потому что, когда я удалил старую версию, я обнаружил новую ошибку _tkinter.Tcl, в которой указывается на ошибку в моем коде. Если вы хотите просмотреть трассировку без необходимости перехода на консоль, я предлагаю разместить оператор try/except вокруг вашего исходного кода, который печатает трассировку в файл. Например:

 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) 

Надеюсь, это помогло.

 Смежные вопросы

  • Нет связанных вопросов^_^