Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在TCL中卸载包?_Tcl_Tk - Fatal编程技术网

如何在TCL中卸载包?

如何在TCL中卸载包?,tcl,tk,Tcl,Tk,我首先加载了一个包: package require Tktable 然后我想卸下这个包裹。我搜索了一些信息,并使用“packageifneeded”获取库路径。我尝试了以下方法: unload $path Tktable 但我收到错误消息“无法在受信任的解释器下卸载”。如何卸载包裹 大多数软件包根本不支持卸载。(具体地说,Tktable没有定义;它没有在其公共C API中定义Tktable_Unload函数或Tktable_SafeUnload函数。)卸载很少,因为它要求C代码的作者特别

我首先加载了一个包:

package require Tktable
然后我想卸下这个包裹。我搜索了一些信息,并使用“packageifneeded”获取库路径。我尝试了以下方法:

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

  • 大多数软件包根本不支持卸载。(具体地说,Tktable没有定义;它没有在其公共C API中定义
    Tktable_Unload
    函数或
    Tktable_SafeUnload
    函数。)卸载很少,因为它要求C代码的作者特别小心,以确保这是可能的,大多数时候,程序员还有其他更高优先级的问题
  • 卸载在安全解释器中被禁用,因为它被认为是不安全的操作。(
    load
    也不受支持,但通常由父级主解释器以受限的方式进行分析,例如通过
    package require
    在幕后做一些聪明的事情。)
  • 如果问题是某个包干扰了您的代码(从您的注释中可以看出),请将代码放在命名空间中。通常有一种简单的方法来选择名称空间名称,通常是应用程序或库的名称。如果你想用和别人一样的方式调用你的代码,而他们的代码比你的代码更为人熟知,那无论如何都会给你带来麻烦
  • 大多数软件包根本不支持卸载。(具体地说,Tktable没有定义;它没有在其公共C API中定义
    Tktable_Unload
    函数或
    Tktable_SafeUnload
    函数。)卸载很少,因为它要求C代码的作者特别小心,以确保这是可能的,大多数时候,程序员还有其他更高优先级的问题
  • 卸载在安全解释器中被禁用,因为它被认为是不安全的操作。(
    load
    也不受支持,但通常由父级主解释器以受限的方式进行分析,例如通过
    package require
    在幕后做一些聪明的事情。)
  • 如果问题是某个包干扰了您的代码(从您的注释中可以看出),请将代码放在命名空间中。通常有一种简单的方法来选择名称空间名称,通常是应用程序或库的名称。如果你想用和别人一样的方式调用你的代码,而他们的代码比你的代码更为人熟知,那无论如何都会给你带来麻烦

  • 你为什么要卸下它?你有没有试着忘记
    package
    ?在我加载这个包之后,我平台上的一些命令被这个包重写了。所以我想在一些特殊情况下卸载它。我尝试过包忘记,但它不起作用。除非采取特殊预防措施,否则被其他命令覆盖的命令不会返回,即使您删除了它们进入的包。您可以尝试将命令放在命名空间中以保留它们。将命令放在全局命名空间中的包很可能会这样做,即使您在命名空间评估中需要它。您可以控制的是您自己的命令的位置。如果您在自己的命名空间中创建它们,则任何包都不会覆盖它们。为了保留偶尔使用的命令,您也可以在需要软件包之前使用重命名。如果命令
    foo
    在您需要时被软件包覆盖,那么请事先执行
    rename foo\u foo
    ,并使用
    \u foo
    访问它。为什么需要卸载它?你有没有试着忘记
    package
    ?在我加载这个包之后,我平台上的一些命令被这个包重写了。所以我想在一些特殊情况下卸载它。我尝试过包忘记,但它不起作用。除非采取特殊预防措施,否则被其他命令覆盖的命令不会返回,即使您删除了它们进入的包。您可以尝试将命令放在命名空间中以保留它们。将命令放在全局命名空间中的包很可能会这样做,即使您在命名空间评估中需要它。您可以控制的是您自己的命令的位置。如果您在自己的命名空间中创建它们,则任何包都不会覆盖它们。为了保留偶尔使用的命令,您也可以在需要软件包之前使用重命名。如果命令
    foo
    在您需要时被软件包覆盖,那么请事先执行
    rename foo\u foo
    ,并使用
    \u foo
    访问它。