Tkinter报无'getvar'/'eval'属性错误,PySimpleGUI启动失败如何解决
问题根因
你遇到的报错本质是conda环境加载的_tkinter底层二进制模块损坏/版本不匹配,不是上层Python代码的问题,pip重装tkinter无效是因为tkinter属于Python标准库,其二进制依赖需要通过conda单独维护。
排查修复步骤
优先排查PATH优先级冲突
你大概率最近安装了自带Tcl/Tk的软件(如Git for Windows、TortoiseSVN、第三方开源工具等),这些软件会将自身的Tk动态库路径写入系统PATH,且优先级高于conda环境路径,导致Python加载了不兼容的_tkinter模块。
排查方法:激活dcs_assistant环境后在终端执行where tcl86t.dll tk86t.dll,若输出的第一条路径不在C:\Users\pawni\Miniconda3\envs\dcs_assistant目录下即可确认冲突。
修复方法:将conda环境的根目录、Scripts、Library/bin路径上移到系统PATH中第三方软件路径的上方,或临时删除当前会话PATH里的第三方Tk相关路径后再运行程序。修复conda环境的损坏依赖
不要使用pip安装/卸载tkinter,该操作对标准库组件完全无效。正确的重装步骤:- 激活
dcs_assistant环境 - 执行
conda uninstall python tk - 执行
conda install python tk - 重装完成后先运行测试脚本验证Tk是否恢复正常,再重新安装PySimpleGUI即可。
- 激活
修复VC运行库
若近期有Windows系统更新,可能会损坏Tk依赖的VC 2015-2022运行库,直接下载对应架构的VC++运行库安装包执行修复安装即可。新建干净环境验证
若上述操作都无效,直接新建无冲突的conda环境:
执行conda create -n dcs_assistant_new python=3.9 tk pysimplegui,激活新环境后迁移原有项目代码即可,避免在损坏的旧环境上浪费时间。
注意事项
conda环境中尽量优先使用conda安装GUI相关依赖,避免混用pip和conda安装依赖导致的底层二进制版本冲突。
内容的提问来源于stack exchange,提问作者Pawel Niesler

