About module importation

If I have a module A importing a package B and a module C importing the package B, How can do to import the module B only one time so that module A and module C can use it

Maybe I am not fully getting you question, but if B is indeed package (added using Pkg) there is no problem in using multiple times. Do you encounter any problems with this?

module A
    using B
    # code that usese B
end
module C
    using B
    # code that usese B
end

If all A, B and C are modules in files it is a bit more complicated, but it would look roughly like this:

module MainWorkingModule
    module B
        # define stuff
    end
    module A
        using ..B # i.e. use the module B known in the parent scope of A
        # code that usese B
    end
    module C
        using ..B
        # code that usese B
    end
end

naturaly, you can split it up in different files:

module MainWorkingModule
    include("B.jl")
    include("A.jl")
    include("C.jl")
end

Note that MainWorkingModule could be also just Main, i.e. the repl context.

3 Likes

OP probably believes that every import loads the module’s code separately. As you demonstrate, repeated imports actually reuse a loaded module.

In fact I have a module A that import SimpleDirectMediaLayer, but there is also another separate module that need the same package. Since importing SimpleDirectMediaLayer takes some time, I feared that importing it many times will cause trouble

Importing a package multiple times only actually loads it once, and subsequent times the already-imported module gets reused.

Thanks