在 TCL 中找不到包 fileutil(如何为第三方 TCL 解释器安装它)

can't find package fileutil in TCL(how to install it for third party TCL interpreter)

我安装了 Win 7 机器和 TCL downloads.activestate.com/ActiveTCL/releases/8.6.4.1/ActiveTcl8.6.4.1.299124-win32-x86_64-threaded.exe
我正在成功使用 TCL 包 fileutil,如:

proc foo{} {
 # some code 
  package require fileutil
  # able to use ::fileutil::updateInPlace in code 
}

foo

这是通过

处的脚本完成的

C:/SVN/code/changeFile.tcl

现在,我使用与

相同的代码作为更大脚本的一部分
proc foo{} {
     # some code 
      package require fileutil
     # some code using the package

    }

# more code
cd "C:/SVN/code"
foo
#more code
cd "C:/Program Files (x86)/Target Compiler Technologies/adsp2-12R2/designs/adsp2/ISS"

这是名为 audio_sim.tcl 的脚本的一部分,通过 shell

上的以下命令调用

cd "C:/Program Files (x86)/Target Compiler Technologies/adsp2-12R2/designs/adsp2/ISS" adsp2_ia.exe -T -t "C:/SVN/code/audio_sim.tcl"

现在出现错误:

can't find package fileutil

当它与我在第一个案例中所做的相似时,为什么它现在抱怨?

正如 slebetman 所写,adsp2_ia.exe 可能找不到 ActiveTcl 库文件,但您可以自己导入包。在我的 8.6.1 安装中,文件位于 C:\Tcl\lib\teapot\package\tcl\teapot\tcl8.2\fileutil-1.14.8.tm。您的位置或版本号可能不同,但请注意,您要查找的是 .tm 文件。它不会在任何名为 fileutil 的目录中,这些目录用于相关包。

(另一个 slebetman 指针:)可以通过调用 ::tcl::tm::path add 并将路径作为参数使模块可见。

如果没有,使用source导入代码。在任何过程之外的全局范围内进行调用。

那么你应该可以调用 package require fileutil.

文档:package, source, tm