Uno dei progetti a cui sto collaborando ha quattro moduli diversi (Foo
, Bar
, Baz
e Plotting
) e mi è stato assegnato il compito di combinarli in un pacchetto. E 'abbastanza semplice in Julia per fare un nuovo pacchetto:Posso creare un pacchetto Julia contenente più moduli che possono essere importati in modo indipendente?
julia> Pkg.generate("MyPackage", "MIT")
ho copiato i miei moduli in ~/.julia/v0.3/MyPackage/src/
e ha aggiunto comprendono dichiarazioni MyPackage.jl
. Assomiglia a questo:
module MyPackage
include("foo.jl")
include("bar.jl")
include("baz.jl")
include("plotting.jl")
end
Ogni file incluso contiene il modulo corrispondente.
Il mio problema principale con questo è Plotting
prende sempre di importare e non serve molto spesso quando stiamo usando il resto della MyPackage
. Mi piacerebbe davvero essere in grado di fare qualcosa come using MyPackage.Foo
per ottenere solo Foo
(e in particolare per escludere il Plotting
e il suo tempo di importazione lento). Ho provato un paio di approcci diversi per il modo in cui strutturo le cose, includendo i sottomoduli esplicitamente definiti all'interno di MyPackage.jl
invece che in ogni singolo file, ma non importa quello che provo, ottengo sempre il ritardo di caricamento da Plotting
.
È possibile creare un pacchetto in modo da poter caricare autonomamente i moduli da esso? e se sì, come?
Nota: sono nuovo di Julia e più recente ancora di creare pacchetti. Scusa se qualcuno della mia semantica ha torto o qualcosa non è chiaro.
Per chiunque sia interessato in modo più dettagliato, '@ lazymod' è una macro in' Requires.jl' che ritarda l'importazione di un modulo fino a quando non viene effettivamente utilizzato, tuttavia, cambia anche la sintassi per chiamare il modulo. Anche se non sembra la soluzione più elegante, è certamente utile per velocizzare le importazioni fino a quando non ho davvero bisogno di tracciare. Grazie! – harts12
Sembra che nella versione recente di 'Requires.jl', la funzione' @ lazymod' sia stata rimossa ... – harts12