是否有Tcl包初始化过程?

是否有Tcl包初始化过程?,tcl,Tcl,有没有一种方法可以定义在加载Tcl包时自动调用的初始化过程 在本例中,我需要解析一个配置文件并设置一个名称空间变量 我最初将代码放在名称空间中,在proc之外,但是pkg_mkIndex在源文件时尝试执行代码,并抛出了一个错误“while sourcing”。这个包文件源于tclsh,我不知道为什么它不能在pkg_mkIndex中这样做 为了pkg_mkIndex的缘故,我可以注释掉init例程,如果这样做是正确的,但是我想知道是否有一种内置的方法可以让init过程自动执行,即la C的main

有没有一种方法可以定义在加载Tcl包时自动调用的初始化过程

在本例中,我需要解析一个配置文件并设置一个名称空间变量

我最初将代码放在名称空间中,在proc之外,但是pkg_mkIndex在源文件时尝试执行代码,并抛出了一个错误“while sourcing”。这个包文件源于tclsh,我不知道为什么它不能在pkg_mkIndex中这样做

为了pkg_mkIndex的缘故,我可以注释掉init例程,如果这样做是正确的,但是我想知道是否有一种内置的方法可以让init过程自动执行,即la C的main()

但是我想知道是否有一种内置的方法来实现init过程 自动执行

通常的做法是在脚本中提供初始化脚本,例如:

package ifneeded mypkg 1.0.0 "source [list [file join $dir mypkg.tcl]]; source [list [file join $dir myinit.tcl]]"

使用
pkg_mkIndex
在任何非琐碎的事情上都没有特别的帮助,因为它试图(部分)评估源文件及其所有依赖项。更好地手工编写
pkgIndex.tcl
脚本并分离关注点(pkg定义、pkg初始化;见上文)。

我总是手工编写
pkgIndex.tcl
文件(或者更确切地说,我在安装时使用简单的替换生成它们,通常只是正确插入版本号)。