我或多或少有以下设置。在~/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[]
现在,我的问题是我想使用in中的vecNorm
定义。如何从内部(安全地)加载?package1.m
package2.m
package1
package2
目前,我手动加载这两个包,如下所示:
SetDirectory[StringJoin[NotebookDirectory[], "packages"]];
Needs["package1`"]
Needs["package2`"]
从保存在~/path/to/my
. 我只想手动加载,而 package2
这又会自动安全地加载package1
。一般来说,我想要一个尽可能少地改变数学路径等的解决方案。实现这一目标的最佳实践应该是什么?
PS:安全我的意思是在将来,当我将定义package3
哪个也将使用vecNorm
并且将加载package1
以及不会发生冲突时。