我的问题是我创建了两个版本1.1 1.1包 我在1.1和1.2中有相同的程序,但我在1.2中修改了一个新版本的程序。
现在我的问题是想要访问旧版本(1.1)程序。我怎么办?
答案 0 :(得分:1)
每个解释器只能加载任何特定包的单个版本;假设它们的命名空间发生冲突,因此不可能同时加载同一个东西的两个版本。
但是,您可能能够在子解释器中加载其他版本(使用-exact
选项强制使用较新版本)。这比使用C组件的纯脚本包更有可能(这取决于操作系统的动态库加载器对这些东西感到满意;有些是,有些则不是。)
interp create subinterp
subinterp eval {
package require -exact mypackage 1.1
}
subinterp eval mySquare 3
这可能是也可能不是你所追求的;解释器非常彼此强烈隔离,因此访问主解释器中正在进行的其他操作需要设置别名......
答案 1 :(得分:0)
在包require语句中使用-exact标志:
package require -exact mypackage 1.1
更新: 我不建议一个接一个地加载相同包的不同版本。但是,您可以加载第一个版本,开展业务,卸载它,然后加载第二个版本并开展业务。在代码中:
package require -exact mypackage 1.1
mySquare 2
package forget mypackage
package require -exact mypackage 1.2
mySquare 3