【发布时间】:2011-12-05 12:29:52
【问题描述】:
我或多或少有以下设置。在~/path/to/my/packages 我有两个包package1.m 和package2.m。例如,每个包的轮廓如下:
BeginPackage["package1`"]
Unprotect@@Names["package1`*"];
ClearAll@@Names["package1`*"];
Begin["`Private`"]
vecNorm[vec_?VectorQ]:=Module[{},Return[Sqrt[vec.vec]]];
End[]
Protect@@Names["package1`*"];
EndPackage[]
现在,我的问题是我想在package2.m 中使用package1.m 中定义的vecNorm。如何从package2 中(安全地)加载package1?
目前,我手动加载两个包,如下所示:
SetDirectory[StringJoin[NotebookDirectory[], "packages"]];
Needs["package1`"]
Needs["package2`"]
来自保存在~/path/to/my 中的笔记本。我想仅手动加载package2,而这又会自动安全地加载package1。一般来说,我想要一个尽可能少地改变数学路径等的解决方案。实现这一目标的最佳做法应该是什么?
PS:安全的意思是在将来,当我定义 package3 时,它也将使用 vecNorm 并将加载 package1 并且不会发生冲突发生。
【问题讨论】:
标签: wolfram-mathematica mathematical-packages