Могу ли я сделать пакет Julia, содержащий несколько модулей, которые можно импортировать самостоятельно?

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

Ответ 1

Попробуйте Requires.jl:

Requires is a Julia package that will magically make loading packages faster, maybe. It supports specifying glue code in packages which will load automatically when a another package is loaded, so that explicit dependencies (and long load times) can be avoided.