У меня более или менее следующая настройка. В ~/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[]
Теперь, моя проблема в том, что я хочу использовать vecNorm
, определенный в package1.m
в package2.m
. Как я могу загрузить (безопасно) package1
из package2
?
На данный момент я загружаю вручную оба пакета следующим образом:
SetDirectory[StringJoin[NotebookDirectory[], "packages"]];
Needs["package1`"]
Needs["package2`"]
из блокнота, сохраненного в ~/path/to/my
. Я хочу загружать вручную только пакет2
, который в свою очередь будет автоматически и безопасно загружать пакет1
. В общем, мне нужно решение, которое как можно меньше изменяет пути и т.д. системы Mathematica. Какова должна быть лучшая практика для достижения этого?
PS: Под безопасностью я подразумеваю, что в будущем, когда я буду определять package3
, который будет также использовать vecNorm
и будет загружать package1
, конфликтов не будет.