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