Ho più o meno la seguente impostazione. In ~/path/to/my/packages
ho due pacchetti package1.m
e package2.m
. contorno di ogni pacchetto è, per esempio, i seguenti:Carica un pacchetto mathematica da un pacchetto
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[]
Ora, il mio problema è che io voglio usare vecNorm
definite in package1.m
in package2.m
. Come posso caricare (sicuro) package1
da package2
?
Al momento, carico manualmente entrambi i pacchetti come segue:
SetDirectory[StringJoin[NotebookDirectory[], "packages"]];
Needs["package1`"]
Needs["package2`"]
da un notebook salvata in ~/path/to/my
. Voglio caricare manualmente solopackage2
che a sua volta verrà caricato automaticamente e in modo sicuro package1
. In generale voglio una soluzione che cambi il meno possibile di percorsi ecc. Di mathematica. Quale dovrebbe essere la migliore pratica per realizzare questo?
PS: In modo sicuro voglio dire che in futuro, quando sarò definisco package3
che sarà utilizzato vecNorm
come bene e sarò caricando package1
così conflitti accadrà.
Il tuo primo metodo ha risolto il mio problema! Grazie. Per quanto riguarda il secondo, quando lo si prova, sembra che ci sia un problema con il percorso di ricerca e 'package1' non riesce a trovare' package2'. - Ho provato questa opzione da solo e non ha funzionato. – Dror
@Dror Il secondo metodo dovrebbe funzionare correttamente. In caso contrario, questo dovrebbe significare che hai piazzato il tuo secondo pacchetto da qualche parte dove Mathematica non riesce a trovarlo. Dovresti quindi riposizionare i tuoi pacchetti in un posto dove M può trovarli (ad esempio '$ UserBaseDirectory'), o aggiungere la directory contenente i tuoi pacchetti alla variabile' $ Path'.In realtà, entrambi i metodi di importazione funzionano, o entrambi dovrebbero fallire, quindi sono un po 'perplesso per la tua situazione. –
Voglio una soluzione che sia il più possibile libera da modifiche ai percorsi, poiché tutto questo è in una directory condivisa e non so quali sono le impostazioni dei miei collaboratori. In effetti, sembra che il secondo metodo non trovi il pacchetto base. Sono sicuro perplesso; ma felice che ci sia una soluzione :) – Dror