在tcl一个人如何找出包的路径装?
% tclsh
% package require csv
Run Code Online (Sandbox Code Playgroud)
我想找出csv加载的路径.
>>> import os
>>> print os.__file__
'/a/b/python2.2.1/linux26_x86_64/lib/python2.2/os.pyc'
Run Code Online (Sandbox Code Playgroud)
我正在寻找类似的命令 tcl
kos*_*tix 18
事情并非如此简单:Tcl中的包似乎比Python更抽象.
首先,有两种包:"经典"和"模块",它们具有不同的底层机制,用于查找响应package require ...命令加载的内容.
接下来,两种包都能够做任何他们希望提供功能的东西.这意味着他们可以(但不限于):
source只需一个Tcl文件或任意数量的文件.load在需要包时被编辑.因此,问题本身没什么意义,因为只有模块由一个自包含的文件表示,但"经典"包可以自由地实现它们自己认为合适.
另一方面,每个包通常(以这种或那种方式)向包子系统提供某些信息,该信息可以使用该package ifneeded命令进行检索(和解析).例如,在我的带有ActiveState Tcl 8.5.x的Windows系统上,我有:
% package require csv
0.7.2
% package ifneeded csv 0.7.2
package provide csv 0.7.2;source -encoding utf-8 {C:/Program Files/Tcl/lib/teapot/package/tcl/teapot/tcl8/8.3/csv-0.7.2.tm}
Run Code Online (Sandbox Code Playgroud)
请注意,package ifneeded返回的只是一个Tcl脚本,它意味着要eval加载包,因此解析这些信息本质上是临时的和脆弱的.
小智 7
对于 Tcl 软件包,您可以通过命令查看所有可加载路径目录的列表:
join $::auto_path \n
Run Code Online (Sandbox Code Playgroud)