繁体   English   中英

在 Anaconda/Spyder/Python 3.8.5 中无法识别 Tcl 版本

[英]Tcl version not recognized in Anaconda/Spyder/Python 3.8.5

我在 Anaconda 中安装了 8.6.10 的 tk package。 我运行 Python 3.8.5 当我在 Spyder IDE 中运行简单脚本时

import tkinter as tk
win = tk.Tk()

我收到经典消息“TclError:在以下目录中找不到可用的 init.tcl:”在报告的目录列表中,我确实有 tcl。 我尝试在 anaconda 的 cmd 中运行 tclsh 并希望它们都在工作。 通过运行 wish 并寻找它正确报告的版本 Tcl 和 Tk 8.6.10

所以我把 C:\ProgramData\Anaconda3\Library\lib\tcl8.6\init.tcl 移到 C:/ProgramData/library 中,因为这是我在错误报告中得到的目录之一。 当我这样做时,我收到另一个错误“C:/ProgramData/library/init.tcl:package“Tcl”的版本冲突:有 8.6.9,正好需要 8.6.10”

所以很明显 bin 中的 tclsh 和 init.tcl 不是来自同一个版本(为什么?)但是现在如何强制我的 python 脚本寻找正确的 Tcl/Tk 的正确行为? 我期待这能开箱即用

ps 目录“C:\ProgramData\Anaconda3\Library\lib\tcl8.6”也在错误返回的目录列表中。

问题是正在使用的 DLL 的版本(可能是TCL86.DLLTK86.DLL在 Windows 上的版本),其中一个必须与它们的主要版本完全匹配init.tcl ,但除此之外还有很多)。 这是一个硬性要求。 软件会检查它(正确地。)没有它们肯定不会工作。 由于二进制代码正在查找来自 8.6.9 的文件,但具有来自 8.6.10 的文件(版本不匹配),因此它将无法工作。 (我不知道 Tkinter 是如何建造的。)

但至少我们知道它在寻找什么文件,以及从哪里得到它们。 The official release of Tcl and Tk 8.6.9 is at https://sourceforge.net/projects/tcl/files/Tcl/8.6.9/ so get tcl869-src.zip and tk869-src.zip from there, and copy每个 ZIP 中的library目录的内容到您希望它们所在的位置(可能是搜索的目录之一)。 您不需要做任何比这更花哨的事情,除了可能删除旧的不匹配文件(如果它们在路径上较早)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM