Rya*_*nan 13 tkinter py2app python-3.x anaconda
我使用py2app 0.9上Mac OSX Yosemite 10.10.1运行Python 3.4,从蟒蛇分布,并用Tcl 8.5.
在早期的尝试中,构建会失败,但快速搜索会显示这些问题的解决方案(即包括'packages':['tkinter', 'matplotlib']在OPTIONS中setup.py,并更改第49行MachOGraph.py:loader - > loader_path)
现在py2app完成构建,并在Alias模式下运行我的应用程序功能,但是当我在普通模式(python setup.py py2app)中构建时,生成的应用程序将无法打开,并且控制台显示以下回溯:
回溯(最近一次调用最后一次):文件"/Users/ryankeenan/Desktop/fishing/gui_test/dist/deani.app/Contents/Resources/ boot .py",第355行,在_run()文件"/ Users/ryankeenan /桌面/钓鱼/ gui_test/dist/deani.app/Contents/Resources/boot .py",第336行,在_run exec(编译(源,路径,'exec'),globals(),globals())文件"/用户/ ryankeenan /桌面/钓鱼/ gui_test/dist/deani.app/Contents/Resources/deani.py",第731行,在app = fishingapp()文件"/ Users/ryankeenan/Desktop/fishing/gui_test/dist/deani .app/Contents/Resources/deani.py",第536行,在init tk.Tk中.init(self,*args,**kwargs)文件"/Users/ryankeenan/Desktop/fishing/gui_test/dist/deani.app/Contents/Resources/lib/python3..py",第1851行,在init self.tk = _tkinter.create(screenName,baseName,className,interactive,wantobjects,useTk,sync,use)_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'], )
Run Code Online (Sandbox Code Playgroud)
我遇到了这个问题,发现这是由于 .tcl/tk 版本冲突造成的/Library/Frameworks。检查构建的输出(确保首先删除旧的构建)以获取对不同版本 tcl/tk 的引用。我发现我当前的 tcl/tk 版本是 py2app 链接到的 8.6,但同时 py2app 正在从 tcl/tk 8.5 复制文件。我通过从 `/Library/Frameworks/(Tcl/Tk).framework/Versions 中删除 8.5 解决了这个问题。
注意:我不建议删除版本,除非您在构建输出中看到问题并且知道没有其他(您关心的)依赖于该版本。
然而,这不是我唯一的错误,因为当我删除旧版本时,我发现了一个新_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)
Run Code Online (Sandbox Code Playgroud)
希望这有帮助。
| 归档时间: |
|
| 查看次数: |
613 次 |
| 最近记录: |