У меня более или менее следующая настройка. В ~/path/to/my/packages
у меня есть два пакета package1.m
и package2.m
. Каждый контур пакета представляет собой, например, следующее:
BeginPackage["package1`"]
[email protected]@Names["package1`*"];
[email protected]@Names["package1`*"];
Begin["`Private`"]
vecNorm[vec_?VectorQ]:=Module[{},Return[Sqrt[vec.vec]]];
End[]
[email protected]@Names["package1`*"];
EndPackage[]
Теперь моя проблема в том, что я хочу использовать vecNorm
, определенный в package1.m
в package2.m
. Как я могу загрузить (безопасно) package1
из package2
?
В настоящий момент я загружаю вручную оба пакета следующим образом:
SetDirectory[StringJoin[NotebookDirectory[], "packages"]];
Needs["package1`"]
Needs["package2`"]
из записной книжки, сохраненной в ~/path/to/my
. Я хочу загрузить только вручную package2
, который, в свою очередь, будет загружаться автоматически и безопасно package1
. В общем, я хочу решение, которое изменяет как можно меньше путей и т.д. Математики. Какая должна быть лучшая практика для этого?
PS: В безопасности я подразумеваю, что в будущем, когда я определю package3
, который будет использовать vecNorm
, а также будет загружаться package1
, и никаких конфликтов не произойдет.