如何在TCL中卸载软件包?

时间:2018-06-28 15:11:38

标签: tcl tk

我先加载了一个包裹:

package require Tktable

然后我要卸载此软件包。我搜索了一些信息,并使用“需要的包”来获取库路径。我尝试如下:

unload $path Tktable 

但是我收到错误消息“无法在受信任的解释器下卸载”。如何卸载包裹?

1 个答案:

答案 0 :(得分:3)

  1. 大多数软件包根本不支持卸载。 (具体来说,Tktable不会;它没有在其公共C API中定义Tktable_Unload函数或Tktable_SafeUnload函数。)卸载很少,因为它要求C代码的作者采取特殊的态度。努力确保一切皆有可能,而且在大多数时候,程序员还有其他更高优先级的问题。
  2. 在安全解释器中禁用了卸载,因为这被认为是不安全的操作。 (load也不受支持,但是通常由父级主解释器以受限的方式进行概要分析,例如通过package require在幕后进行巧妙的操作。)
  3. 如果问题是某些程序包干扰了您的代码(就像您的注释中的情况),请将您的代码放在命名空间中。通常有一种简单的方法来选择名称空间名称,通常您的应用程序或库的名称可以正常工作。如果您想将代码与他人的代码称为同一个东西,并且他们的代码比您的代码更为知名,那么无论如何都会给您带来麻烦。