【问题标题】:can't find package fileutil in TCL(how to install it for third party TCL interpreter)在 TCL 中找不到包 fileutil(如何为第三方 TCL 解释器安装它)
【发布时间】: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


【解决方案1】:

正如 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 指针:)可以通过使用路径作为参数调用 ::tcl::tm::path add 使模块可见。

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

那你应该可以拨打package require fileutil了。

文档:packagesourcetm

【讨论】:

  • 对于 .tm 文件,最好使用tcl::tm::path add 而不是采购。也就是说,如果解释器支持它。对于年长的口译员(很可能),您需要获取它。
  • @slebetman:是的。我认为建议 'source' 会使它更容易和更有可能在非标准解释器中工作,但当然应该提到 ::tcl::tm::path add 以确保完整性。谢谢。
  • @PeterLewerin 和 slebetman 谢谢你们……你们是救世主。我找到了位置并在 ::tcl::tm::path add 之后做了一个 source 并且效果很好。
  • @user915783:只有路径添加和源之一是必需的。尝试路径添加,然后先打包需要。如果这不起作用,请改用 source 和 package require 。两者都做不会有什么坏处,但没有必要。
猜你喜欢
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
  • 2017-01-03
  • 1970-01-01
  • 2011-04-10
  • 2013-10-15
  • 2019-08-10
  • 1970-01-01
相关资源
最近更新 更多