【发布时间】:2015-09-04 00:26:25
【问题描述】:
我安装了 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 技术/adsp2-12R2/designs/adsp2/ISS" adsp2_ia.exe -T -t "C:/SVN/code/audio_sim.tcl"
这现在给出了错误:
找不到包fileutil
当它与我在第一个案例中所做的相似时,为什么它现在抱怨?
【问题讨论】:
-
在第一个实例中,脚本由 ActiveTcl 附带的 tclsh.exe(或 tclsh86.exe)执行。在第二种情况下,它由 adsp2_ia.exe 执行,这是一个具有内置 tcl 解释器的第三方程序。这就是它找不到包裹的原因。从这个意义上说,Tcl 有点独特,因为与 Perl 或 Ruby 不同,您经常会在另一个程序中发现它是一种脚本语言。很像javascript。这就像为无法在 IE 中运行的 Firefox 编写 javascript 代码一样。我没有解决方案,所以我将其发布为评论。
-
@slebetman 所以我想我需要想办法为第三方解释器安装这个包
-
如果包是纯 tcl 代码,那么你可以只搜索实现包的文件,获取它然后执行包要求。
标签: tcl