我使用带有Python 3.7.1的免费Anaconda发行版1.9.6和python 3.7.1在tkinter中运行一个接口,为此,我需要一个用TCL编写的科学模拟软件SIMPSON来执行。
有问题的软件: https://inano.au.dk/about/research-centers/nmr/software/simpson/ (该软件的安装不会带来恶意软件或任何不便之处,如果有人要测试,则此处讨论的除外)
问题在于,甚至是简单代码的执行:
import tkinter as tk
main_window = tk.Tk()
main_window.mainloop()
…返回错误消息:
文件“”,第1行,在 runfile('R:/tests/MWE/tkinter_test.py',wdir ='R:/ tests / MWE')
文件 “ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ spyder_kernels \ customize \ spydercustomize.py”, 运行文件中的第704行 execfile(文件名,命名空间)
文件 “ C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ spyder_kernels \ customize \ spydercustomize.py”, execfile中的第108行 exec(compile(f.read(),文件名,'exec'),命名空间)
第10行中的文件“ R:/tests/MWE/tkinter_test.py” main_window = tk.Tk()
文件“ C:\ ProgramData \ Anaconda3 \ lib \ tkinter__init __。py”,第2023行, 在初始化中 self.tk = _tkinter.create(screenName,baseName,className,交互式,wantobjects,useTk,sync,use)
TclError:在以下目录中找不到可用的init.tcl: {C:\ Program Files(x86)\ SIMPSON \ tcl8.6} C:/ProgramData/Anaconda3/lib/tcl8.6 C:/ProgramData/lib/tcl8.6 C:/lib/tcl8.6 C:/ ProgramData /库C:/库C:/tcl8.6.8/库 C:/tcl8.6.8/library
C:/程序文件(x86)/SIMPSON/tcl8.6/init.tcl:版本冲突 软件包“ Tcl”:有8.6.8,需要确切的8.6.2版本冲突 包“ Tcl”:有8.6.8,恰好需要8.6.2 在执行“ package require -exact Tcl 8.6.2”时 (文件“ C:/程序文件(x86)/SIMPSON/tcl8.6/init.tcl”第19行) 从“源{C:/ Program Files(x86)/SIMPSON/tcl8.6/init.tcl}”中调用 (“上级”正文行1) 从“上级#0 [列出源$ tclfile]”中调用
这可能意味着Tcl安装不正确。
SIMPSON正常执行。仅在卸载SIMPSON和重新安装Anaconda之后,该问题才会消失,但是必须有一种更简单的方法……
答案 0 :(得分:0)
从错误消息中,我认为与SIMPSON捆绑在一起的Tcl使得anaconda Tcl出现了问题,因为两者的版本均不同。 SIMPSON的Tcl为8.6.2,而蟒蛇的Tcl为8.6.8,满足Tkinter版本8.6.8。这意味着Tkinter不能与Tcl> = 8.6.8一起运行。
在SIMPSON上更新Tcl应该可以解决该错误。 您也可以尝试更新Anaconda Tcl来解决该问题。
通过命令行(More Details)在Anaconda上更新Tcl / Tk。
命令:
conda install -c conda-forge tk
conda install -c conda-forge/label/gcc7 tk
conda install -c conda-forge/label/broken tk
conda install -c conda-forge/label/cf201901 tk