1

我已经尝试在 wish(*.tk) 文件中加载线程包。你能告诉我如何在wish(tk)文件中使用包吗?

% pkg.tk

#!/usr/bin/wish -f
#!/usr/bin/tclsh8.5

package require Thread

错误:

Error in startup script: can't find package Thread
    while executing
"package require Thread"
    (file "./pkg.tk" line 4)
4

1 回答 1

0

似乎 Thread 包不在 Tcl 在查找包时搜索的位置路径上。

解决此问题的标准方法是通过TCLLIBPATH环境变量。

在启动 Tcl 解释器之前,您需要找到包含实现的目录并将该目录的父目录放在环境变量中。在我的系统上,实际实现在其中/opt/local/lib/thread2.8.5/libthread2.8.5.dylib,这将通过以下方式完成:

export TCLLIBPATH=/opt/local/lib

但是位置和文件名肯定会因系统而异!(默认情况下应该有正确的位置,但是其他软件有办法导致问题。这真的很烦人!)请注意,您应该使用/而不是\因为后者是 Tcl 元字符。如果有多个位置,则TCLLIBPATH实际上包含一个空格分隔的列表。


请注意,这与处理您自己的特定于应用程序的包不同。在这种情况下,您应该lappend auto_path $location在主脚本的开始处获取它们的位置(或多个位置)。

于 2020-10-22T11:41:42.537 回答