私は多かれ少なかれ次の設定をしています。には~/path/to/my/packages
と の 2 つのパッケージが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[]
vecNorm
さて、私の問題は、 defined in package1.m
inを使用したいということですpackage2.m
。package1
内から(安全に)ロードするにはどうすればよいpackage2
ですか?
現時点では、次のように両方のパッケージを手動でロードします。
SetDirectory[StringJoin[NotebookDirectory[], "packages"]];
Needs["package1`"]
Needs["package2`"]
に保存されているノートブックから~/path/to/my
。手動でのみ ロードしたいのですが、package2
これは自動的かつ安全にロードされますpackage1
。一般的に、Mathematica のパスなどをできるだけ変更しないソリューションが必要です。これを達成するためのベストプラクティスは何ですか?
PS : 安全とは、将来、package3
どちらが使用vecNorm
され、ロードpackage1
されるかを定義するときに、競合が発生しないことを意味します。