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

can';在TCL中找不到包fileutil(如何为第三方TCL解释器安装),tcl,Tcl,我已从安装Win 7机器和TCL 我正在成功使用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 cod

我已从安装Win 7机器和TCL
我正在成功使用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)/目标编译器 技术/adsp2-12R2/designs/adsp2/ISS“adsp2_ia.exe-T-T “C:/SVN/code/audio\u sim.tcl”

现在,这会产生错误:

找不到包fileutil


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

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

(另一个slebetman指针:)可以使用path作为参数调用
::tcl::tm::path add
,使模块可见

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

然后您应该能够调用
包require fileutil


文档:,

首先,脚本由ActiveTcl附带的tclsh.exe(或tclsh86.exe)执行。在第二个实例中,它由adsp2_ia.exe执行,这是一个具有内置tcl解释器的第三方程序。这就是它找不到包裹的原因。从这个意义上讲,Tcl有点独特,因为与Perl或Ruby不同,您经常会发现它是另一个程序中的脚本语言。很像javascript。这就像为Firefox编写不在IE中运行的javascript代码。我没有解决方案,所以我将此作为注释发布。@slebetman所以我想我需要找到方法为第三方解释器安装此软件包。如果该软件包是纯tcl代码,那么您可以搜索实现该软件包的文件,源代码然后执行包要求。对于.tm文件,最好执行
tcl::tm::path add
而不是源代码。也就是说,如果解释器支持它。对于较老的口译员(很可能),您需要找到它的来源。@slebetman:是的。我认为建议使用“source”会使它更容易,也更可能在非标准解释器中工作,但为了完整性,当然应该提到
::tcl::tm::path add
。谢谢。@PeterLewerin和slebetman谢谢你们。你们是救世主。我在::tcl::tm::path add之后找到了位置并做了一个源代码,效果很好。@user915783:只需要path add和source中的一个。请先尝试路径添加,然后尝试打包要求。如果这不起作用,请改用source和packagerequire。两者都做不会有什么坏处,但这是没有必要的。