Один из проектов, с которыми я сотрудничаю, имеет четыре разных модуля (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 и новичок в создании пакетов. Извините, если какая-либо из моих семантик неверна или что-то неясно.