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

时间:2014-11-03 00:10:47

标签: python python-2.7 tcl

我正在尝试编译一个程序(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 :(得分:14)

步骤1:打开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

第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

答案 1 :(得分:0)

Tk(概念上)有两件:

  1. 实现视图的动态库文件
  2. 实现默认控制器的脚本库文件。
  3. 这些必须完全相互匹配(这是保证它们正常工作的唯一方式)。默认情况下,Tk DLL包含可以找到其脚本的路径,但它可以被环境变量覆盖;该机制主要用于支持预安装测试,但有时它的使用比实际应用的更多。

    您似乎已配置了一些内容,以便您拥有一个版本的DLL(8.5.2),而不同版本的脚本(8.5.15)。这可能是因为您已经链接到错误版本的DLL,或者因为您将环境变量(TK_LIBRARY)设置为指向错误的安装。从错误消息中可以看出它有点难以理解:真正说的是版本不匹配。