“Tk”包版本冲突:已有8.5.2,需要8.5.15

8 投票
2 回答
15415 浏览
提问于 2025-05-01 05:18

我正在尝试编译一个程序(python2.7),但是无论我怎么做,都会出现这个错误:

C:/Python27/tcl/tk8.5/tk.tcl: version conflict for package "Tk": have 8.5.2, need exactly 8.5.15
version conflict for package "Tk": have 8.5.2, need exactly 8.5.15
while executing
"package require -exact Tk  8.5.15"
    (file "C:/Python27/tcl/tk8.5/tk.tcl" line 18)
    invoked from within
"source C:/Python27/tcl/tk8.5/tk.tcl"
    ("uplevel" body line 1)
    invoked from within
"uplevel #0 [list source $file]"

这可能意味着tk没有正确安装。

有人能告诉我这是什么问题吗?

暂无标签

2 个回答

0

Tk可以理解为有两个部分:

  1. 一个动态库文件,用来实现界面
  2. 一个或多个脚本库文件,用来实现默认的控制功能。

这两个部分必须完全匹配,只有这样它们才能正常工作。默认情况下,Tk的动态链接库(DLL)会包含它可以找到脚本的路径,但这个路径可以被环境变量覆盖;这个机制主要是为了支持预安装测试,不过有时候使用得比预期的要多。

看起来你配置的环境中,DLL的版本是8.5.2,而脚本的版本是8.5.15。这可能是因为你链接了错误版本的DLL,或者是因为你设置的环境变量(TK_LIBRARY)指向了错误的安装位置。具体是哪种情况,从错误信息中很难判断,因为它只是说明了版本不匹配。

18

第一步:打开这个文件 C:\Python27\tcl\tcl8.5\init.tcl

if {[info commands package] == ""} {
    error "version mismatch: library\nscripts expect Tcl version 7.5b1 or later but the loaded version is\nonly [info patchlevel]"
}
package require -exact Tcl 8.5.15 

把 8.5.15 改成 8.5.2

第二步:打开这个文件 C:\Python27\tcl\tk8.5\tk.tcl

package require Tcl 8.5 ;# Guard against [source] in an 8.4- interp before
            ;# using 8.5 [package] features.
# Insist on running with compatible version of Tcl
package require Tcl 8.5.0
# Verify that we have Tk binary and script components from the same release
package require -exact Tk  8.5.15

同样把 8.5.15 改成 8.5.2

撰写回答