gpt4 book ai didi

python-3.x - py2app 构建正常,但应用程序失败并显示 "_tkinter.TclError"(并且没有错误消息!)

转载 作者:行者123 更新时间:2023-12-02 11:26:25 25 4
gpt4 key购买 nike

我在 Mac OSX Yosemite 10.10.1 上使用 py2app 0.9,运行来自 anaconda 发行版的 Python 3.4 以及 Tcl 8.5 .

在早期的尝试中,构建会失败,但快速搜索揭示了这些问题的解决方案(即在 setup 的 OPTIONS 中包含 'packages': ['tkinter', 'matplotlib'] .py,并更改 MachOGraph.py 的第 49 行:loader --> loader_path)

现在py2app完成构建,并在别名模式下运行我的应用程序功能,但是当我在正常模式下构建时(pythonsetup.pypy2app)生成的应用程序将无法打开,并且控制台显示以下回溯:

Traceback (most recent call last): File "/Users/ryankeenan/Desktop/fishing/gui_test/dist/deani.app/Contents/Resources/boot.py", line 355, in _run() File "/Users/ryankeenan/Desktop/fishing/gui_test/dist/deani.app/Contents/Resources/boot.py", line 336, in _run exec(compile(source, path, 'exec'), globals(), globals()) File "/Users/ryankeenan/Desktop/fishing/gui_test/dist/deani.app/Contents/Resources/deani.py", line 731, in app = fishingapp() File "/Users/ryankeenan/Desktop/fishing/gui_test/dist/deani.app/Contents/Resources/deani.py", line 536, in init tk.Tk.init(self, *args, **kwargs) File "/Users/ryankeenan/Desktop/fishing/gui_test/dist/deani.app/Contents/Resources/lib/python3.4/tkinter/init.py", line 1851, in 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'], )

最佳答案

我遇到了这个问题,发现这是由于 /Library/Frameworks 中 tcl/tk 版本冲突造成的。检查构建的输出(确保首先删除旧的构建)以获取对不同版本 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)

希望这有帮助。

关于python-3.x - py2app 构建正常,但应用程序失败并显示 "_tkinter.TclError"(并且没有错误消息!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33295215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com