# Distributed loading packages

**URL:** <https://discourse.julialang.org/t/distributed-loading-packages/45224>\
**Category:** General Usage\
**Tags:** question, package, parallel\
**Created:** [August 19, 2020, 6:26pm UTC](https://discourse.julialang.org/t/distributed-loading-packages/45224 "2020-08-19T18:26:49Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Joao\_Barata](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joao_barata/32/10082_2.png) [@Joao\_Barata](https://discourse.julialang.org/u/Joao_Barata)\
**Post date:** [August 19, 2020, 6:26pm UTC](https://discourse.julialang.org/t/distributed-loading-packages/45224/1 "2020-08-19T18:26:49Z")

</div>

Hi,

I’m trying to use distributed computing, but am running into some trouble with loading packages. Here is the MWE:

```julia
module bogus_module

    using Parameters, Distributed

    @with_kw mutable struct cenas
        # Households
        a::Float64
        b::Float64
    end

    @everywhere function ragnarok(parm::cenas)
        @unpack a = parm
        prinln("dum")
    end
end

```

The main script:

```julia
using Distributed

nprocs()==Sys.CPU_THREADS || addprocs(Sys.CPU_THREADS-1)

@everywhere begin
    using Parameters, Distributed
    #include("bogus_module.jl")
    import bogus_module
end

```

I get the error

> Blockquote  
> ERROR: LoadError: TaskFailedException:  
> LoadError: UndefVarError: @unpack not defined  
> Stacktrace:  
> [1] top-level scope  
> [2] eval at .\boot.jl:331 [inlined]  
> [3] (::Distributed.var"#155#156"{Module,Expr})() at .\task.jl:356  
> in expression starting at D:\dropbox\Dropbox\Meu\PhD\Tese\JMP\Code\Julia\main\_code\version7\bogus\_module.jl:12  
> Stacktrace:  
> [1] sync\_end(::Channel{Any}) at .\task.jl:314  
> [2] macro expansion at .\task.jl:333 [inlined]  
> [3] remotecall\_eval(::Module, ::Array{Int64,1}, ::Expr) at D:\buildbot\worker\package\_win64\build\usr\share\julia\stdlib\v1.5\Distributed\src\macros.jl:218  
> [4] top-level scope at D:\buildbot\worker\package\_win64\build\usr\share\julia\stdlib\v1.5\Distributed\src\macros.jl:202  
> [5] include(::Function, ::Module, ::String) at .\Base.jl:380  
> [6] include(::Module, ::String) at .\Base.jl:368  
> [7] top-level scope at none:2  
> [8] eval at .\boot.jl:331 [inlined]  
> [9] eval(::Expr) at .\client.jl:467  
> [10] top-level scope at .\none:3  
> in expression starting at D:\dropbox\Dropbox\Meu\PhD\Tese\JMP\Code\Julia\main\_code\version7\bogus\_module.jl:11

I declared the Parameters package both within the module, which I initiate in every worker, and outside. What am I missing? Why is @unpack not recognized?

---

<div class="post-metadata">

**Author:** ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)\
**Post date:** [August 19, 2020, 6:49pm UTC](https://discourse.julialang.org/t/distributed-loading-packages/45224/2 "2020-08-19T18:49:40Z")

</div>

you’re not `using` “everywhere”

---

<div class="post-metadata">

**Author:** ![jishnub](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jishnub/32/33620_2.png) [@jishnub](https://discourse.julialang.org/u/jishnub)\
**Post date:** [August 20, 2020, 10:42am UTC](https://discourse.julialang.org/t/distributed-loading-packages/45224/3 "2020-08-20T10:42:57Z")

</div>

Consider something like this

```julia
julia> using Distributed

julia> addprocs(2)
2-element Array{Int64,1}:
 2
 3

julia> @everywhere module bogus_module

           using Parameters

           @with_kw mutable struct cenas
               # Households
               a::Float64
               b::Float64
           end

           function ragnarok(parm::cenas)
               @unpack a = parm
               println("dum")
           end
       end

julia> @fetchfrom workers()[1] bogus_module.ragnarok(bogus_module.cenas(1,2))
      From worker 2:	dum

```
