Thanks for replies (sorry I was not notified)
The matter was for running tests often (BDD) and Pkg doesn't seem to be the
solution.
Finally I resolved it but still don't understand what was the matter. :)
I've defined all modules in package.jl with exports and include then use
"using Package.ModuleA.typeA" in moduleB for example.
Le lundi 21 mars 2016 04:13:24 UTC+1, James Dang a écrit :
>
> If MyDir is on the LOAD_PATH, this works for me:
>
> LOAD_PATH/
> Foo/
> src/
> Foo.jl
>
> Foo.jl:
> module Foo
> ...
> end
>
> in separate code:
> import Foo
>
>
>
>
>
>
> On Wednesday, March 16, 2016 at 9:42:37 PM UTC+8, Gregory Salvan wrote:
>>
>> Hi,
>> I don't understand the way of importing/using modules, or including files.
>> I've look at documentation (FAQ and modules) and into this list for old
>> subjects, and tested all solutions I found.
>>
>> with julia version 0.4.3 on gentoo
>>
>> directory structure looks like:
>>
>> package.jl (directory)
>> |_ src
>> | |_ fileA.jl
>> | |_ fileB.jl
>> | |_ fileC.jl
>> | |_ fileD.jl
>> | |_ package.jl
>> |_ test
>> |_ testA.jl
>>
>> The* first issue* I had was with "using" in tests, for example I've
>> tried:
>>
>> push!(LOAD_PATH, string(dirname(@__FILE__), "/..src")) # just to try -
>> ModuleA is in fileA.jl in ../src
>> using ModuleA
>> # alternativelly:
>> # using ModuleA.TypeA1 or using ModuleA: TypeA1...
>> facts("Test ModuleA") do
>> context("create") do
>> type_a1 = ModuleA.TypeA1()
>> end
>> end
>>
>>
>> I've tested launching this test with :
>> JULIA_LOAD_PATH=./src/ LOAD_PATH=./src julia --color=yes test/testA.jl
>>
>> (no differences with import too)
>>
>> The error message is:
>> ERROR: LoadError: ArgumentError: ModuleA not found in path
>>
>> Instead of import/using (but that's not what I wanted), It's OK if I use :
>> include("../src/fileA.jl")
>>
>>
>>
>> The *second issue* is when I wanted to define modules in package.jl this
>> way:
>>
>> module Package
>> module ModA
>> include("fileA.jl")
>> include("fileB.jl")
>> end
>> module ModC
>> include("fileC.jl")
>> end
>> end
>>
>> And have for example a fileD.jl included in fileA.jl and fileB.jl (or
>> fileC.jl) with and immutable type. (I've included fileD.jl because I
>> couldn't use "using" but I would prefer "using")
>> I have an error ERROR: LoadError: LoadError: LoadError: LoadError:
>> LoadError: invalid redefinition of constant ImmutableType
>>
>> So as I can't use "using" to avoid the reloading what can I do?
>> what I've not understood about julia import/using and include ?
>>
>> NOTE:
>> some things I've tried: fileD.jl with a module ModuleD and "using" with
>> and without __precompile__
>> setting LOAD_PATH and JULIA_LOAD_PATH globally with bashrc or passing it
>> to shell
>> ...
>>
>>