# "odd" behavior of module import in multi process environment

**URL:** <https://discourse.julialang.org/t/odd-behavior-of-module-import-in-multi-process-environment/31518>\
**Category:** New to Julia\
**Tags:** question\
**Created:** [November 26, 2019, 5:44am UTC](https://discourse.julialang.org/t/odd-behavior-of-module-import-in-multi-process-environment/31518 "2019-11-26T05:44:01Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sijun](https://avatars.discourse-cdn.com/v4/letter/s/b2d939/32.png) [@Sijun](https://discourse.julialang.org/u/Sijun)\
**Post date:** [November 26, 2019, 5:44am UTC](https://discourse.julialang.org/t/odd-behavior-of-module-import-in-multi-process-environment/31518/1 "2019-11-26T05:44:01Z")

</div>

Maybe odd only in the eye of novice user, but I would like to know why.

So, I have the settings for multi process environment

- JULIA\_NUM\_THREADS = 4
- number of precesses = 4 (-p4)

Also, I have push!(LOCAL\_PATH, “.”) in startup.jl.

There is a very simple module (MyMod.jl) define as:

```julia
module MyMod

function func()
    Core.println("1234")
end

end # MyMod

```

Now, I do in REPL: `using MyMod`

Then I get the error: (this error only happens when #processes are more than 1)  
I feel this is very strange because there is no multi process calls in the module.

One notable thing is that error is not produced if I do:

```julia
include("/path/to/MyMod.jl")
using .MyMod

```

So I guess that unless a module is not part of a package system, then correct way of import a module is to use include() and .using syntax. but I have no idea.

> ERROR: On worker 2:  
> ArgumentError: Package MyMod [top-level] is required but does not seem to be installed:
> 
> - Run `Pkg.instantiate()` to install all recorded dependencies.
> 
> \_require at .\loading.jl:982  
> require at .\loading.jl:911  
> #2 at C:\cygwin\home\Administrator\buildbot\worker\package\_win64\build\usr\share\julia\stdlib\v1.2\Distributed\src\Distributed.jl:78  
> #116 at C:\cygwin\home\Administrator\buildbot\worker\package\_win64\build\usr\share\julia\stdlib\v1.2\Distributed\src\process\_messages.jl:307  
> run\_work\_thunk at C:\cygwin\home\Administrator\buildbot\worker\package\_win64\build\usr\share\julia\stdlib\v1.2\Distributed\src\process\_messages.jl:79  
> run\_work\_thunk at C:\cygwin\home\Administrator\buildbot\worker\package\_win64\build\usr\share\julia\stdlib\v1.2\Distributed\src\process\_messages.jl:88  
> #102 at .\task.jl:268  
> #remotecall\_wait#154(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(remotecall\_wait), ::Function, ::Distributed.Worker) at C:\cygwin\home\Administrator\buildbot\worker\package\_win64\build\usr\share\julia\stdlib\v1.2\Distributed\src\remotecall.jl:421  
> remotecall\_wait(::Function, ::Distributed.Worker) at C:\cygwin\home\Administrator\buildbot\worker\package\_win64\build\usr\share\julia\stdlib\v1.2\Distributed\src\remotecall.jl:412  
> #remotecall\_wait#157(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(remotecall\_wait), ::Function, ::Int64) at C:\cygwin\home\Administrator\buildbot\worker\package\_win64\build\usr\share\julia\stdlib\v1.2\Distributed\src\remotecall.jl:433  
> remotecall\_wait at C:\cygwin\home\Administrator\buildbot\worker\package\_win64\build\usr\share\julia\stdlib\v1.2\Distributed\src\remotecall.jl:433 [inlined]  
> (::getfield(Distributed, Symbol(“##1#3”)){Base.PkgId,Int64})() at .\task.jl:268
> 
> …and 3 more exception(s).
> 
> Stacktrace:  
> [1] sync\_end(::Array{Any,1}) at .\task.jl:235  
> [2] \_require\_callback(::Base.PkgId) at .\task.jl:254  
> [3] #invokelatest#1 at .\essentials.jl:790 [inlined]  
> [4] invokelatest at .\essentials.jl:789 [inlined]  
> [5] require(::Base.PkgId) at .\loading.jl:914  
> [6] require(::Module, ::Symbol) at .\loading.jl:906
