Один из проектов, с которыми я сотрудничаю, имеет четыре разных модуля (Foo
, Bar
, Baz
и Plotting
), и мне было поручено объединить их в пакет. В Julia достаточно просто сделать новый пакет:
julia> Pkg.generate("MyPackage", "MIT")
Я скопировал свои модули в ~/.julia/v0.3/MyPackage/src/
и добавил включенные операторы в MyPackage.jl
. Это выглядит примерно так:
module MyPackage
include("foo.jl")
include("bar.jl")
include("baz.jl")
include("plotting.jl")
end
Каждый включенный файл содержит соответствующий модуль.
Моя основная проблема с этим: Plotting
берет навсегда импорт, и он не нужен очень часто, когда мы используем оставшуюся часть MyPackage
. Мне бы очень хотелось сделать что-то вроде using MyPackage.Foo
, чтобы просто получить Foo
(и, в частности, исключить Plotting
и медленное время импорта). Я пробовал несколько разных подходов к тому, как я структурирую вещи, в том числе наличие явных подмодулей внутри MyPackage.jl
, а не в каждом файле отдельно, но независимо от того, что я пытаюсь, я всегда получаю отставание загрузки от Plotting
.
Возможно ли построить пакет, чтобы вы могли самостоятельно загружать модули из него? и если да, то как?
Примечание. Я новичок в Julia и новичок в создании пакетов. Извините, если какая-либо из моих семантик неверна или что-то неясно.