2010-06-03 70 views

回答

0

使用-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 
1

每个解释器只能加载任何特定包的单个版本;假设它们的命名空间发生冲突,因此无法一次加载同一事物的两个版本。

但是,您可能能够在子解释器中加载其他版本(使用-exact选项强制较新版本)。这是更可能比那些有C成分的纯脚本包的工作(依赖于操作系统的动态库加载快乐与这些东西;有些是,有些不是。)

interp create subinterp 
subinterp eval { 
    package require -exact mypackage 1.1 
} 
subinterp eval mySquare 3 

这可能或者可能不是你想要的;口译员是非常彼此强烈隔离,因此访问其他事情在主翻译进行将需要建立别名...

相关问题