设置TCL以访问tcl库

时间:2013-01-17 18:38:48

标签: tcl tclsh

我是TCL的新手,正在努力寻找其他模块。 SOURCE命令帮助我包含了我在TCL程序中编写的其他代码。但是,我认为我在访问代码库时遇到了问题。

例如,当我引用数学函数时,找不到它。我认为在搜索通过tchsh85调用的程序时,我必须要做一些事情来包括数学库在我的计算机上的位置。

invalid command name "::math::statistics::mv-ols"
None of these directories exist on my computer: info library= C:/Tcl/lib/tcl8.5 auto_path= C:/Tcl/lib/tcl8.5 C:/Tcl/lib c:/tcl/lib/teapot/package/win32-x86_64/lib c:/tcl/lib/teapot/package/tcl/lib tcl library= C:/Tcl/lib/tcl8.5 auto_index= source C:/Tcl/lib/tcl8.5/word.tcl auto_index= source C:/Tcl/lib/tcl8.5/tm.tcl auto_index= source C:/Tcl/lib/tcl8.5/tm.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/parray.tcl auto_index= source C:/Tcl/lib/tcl8.5/history.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/history.tcl auto_index= source C:/Tcl/lib/tcl8.5/package.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/history.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/word.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/word.tcl auto_index= source C:/Tcl/lib/tcl8.5/package.tcl auto_index= source C:/Tcl/lib/tcl8.5/tm.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/history.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/history.tcl auto_index= source C:/Tcl/lib/tcl8.5/package.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/history.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/tm.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/word.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/package.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/history.tcl auto_index= source C:/Tcl/lib/tcl8.5/package.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/word.tcl auto_index= source C:/Tcl/lib/tcl8.5/history.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/auto.tcl auto_index= source C:/Tcl/lib/tcl8.5/history.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl auto_index= source C:/Tcl/lib/tcl8.5/tm.tcl auto_index= source C:/Tcl/lib/tcl8.5/tm.tcl auto_index= source C:/Tcl/lib/tcl8.5/safe.tcl

我收到了这个答案: :: math :: statistics是TCLlib的一部分。要检查是否已安装,请键入

包需要tcllib 如果已安装,它会告诉您版本号。如果没有安装,可以使用Teacup为您安装。

我尝试了代码:

catch {package require nonexistentName}
 package names
puts "[package names]"

我收到了:

Thread logger img::pixmap TclOO tablelist_tile struct::tree opt tcltest img::ico img::pcx struct::set msgcat pngtcl tablelist::common ftp Tclx trsync tdom img::sgi report comm dde Mk4tcl img::sun img::gif img::window textutil cmdline csv img::tga Img img::png Tktable Itk Ttrace tipstack zlibtcl img::base platform fileutil Tk vfs ActiveTcl http tbcload Memchan style struct::graph tablelist treectrl struct::queue img::jpeg activestate::teapot::link img::bmp registry jpegtcl tdomhtml tooltip snit img::ppm struct::stack tcl::tommath img::tiff tls widget struct img::xpm md5 BWidget img::xbm log starkit Tcl Trf tifftcl Itcl img::ps sqlite3 base64 trofs
0.7

我可能不理解TCL,但在我使用的其他语言中,有一种方法可以按照特定顺序为被调用代码设置要搜索的目录或文件列表。在我看来,我需要告诉tclsh85在哪里看。

我从ActiveState下载了tcl 8.5.13和BWidget 1.9.6我安装了tcl并且在我的计算机上解压缩了BWidget,但它与我的tcl程序位于不同的位置。数学是其中的一部分吗?如果没有,我应该下载什么?当我在Windows Vista上运行时,我更喜欢获得可执行版本而不是我需要构建的东西。我可以创建tcl程序,只要它们是自包含的,或者我可以使用SOURCE,一切都很好。我遇到问题的地方是在我的程序之外调用代码。

我担心需要为我的环境设置auto_path,因为它现在与我的计算机上的任何内容都不对应。

请假设我对tcl的工作方式一无所知,请回答。我正在尝试自学(在互联网文档的帮助下以及将回答任务的人)。

谢谢。

1 个答案:

答案 0 :(得分:12)

好的,我试着总结一下你的问题:

您想知道如何安装所需的软件包。

您可以使用teacup来安装它们,例如teacup install math::statistics,这应该可以完成工作,或者下载tcllib并安装它。 Tcllib的安装很简单,应该自动选择应该安装的正确路径。要在代码中使用库,您只需执行package require math::statistics

您想知道如何添加Tcl应该查找库的目录。

取决于它是什么类型的lib,有两种可能性:

  • 如果有一个名为pkgIndex.tcl或autoIndex的文件,则必须修改auto_path变量。这可以通过lappend auto_path path/to/the/files完成。
  • 如果只有一个文件以.tm结尾,那么它有点复杂:你必须添加正确的父目录。因此,如果您有一个位于/some/directory/math/statistics.tm中的statistics.tm文件,这是math :: statistics包,那么相应的目录是/ some / directory。您可以使用::tcl::tm::path add /some/directory
  • 添加它

这样的事情几乎从不是必要的,因为你设法成功安装BWidgets,auto_path应该没问题。请注意,Tcl使用(像许多其他语言,包括Java,Perl等)一个/作为路径分隔符而不是通常的窗口\

您更喜欢单个文件可执行文件 是的,这是可能的,但您应该首先了解如何获取软件包,需要哪些文件等。单个文件Tcl分发的技术称为Starkit,这是非常有用的,但您应该熟悉Tcl已经。