Julia包含其它文件如何使用项目路径?

文件夹变多之后的include经常会变成这样:

include("../../xxx.jl")

Rust里有个crate可以方便从项目文件夹开始导入,Julia好像没有这种方式诶?
难道Julia建议尽量不要嵌套文件夹,或者把文件夹尽量都组织成一个Module?

不是很清楚你想表达的是什么意思, 你可以简单描述一下文件夹结构以及你想做什么么?

有一个宏 @__DIR__ 不知道是不是你想要的。

比如这么一个目录
.
image
file1.jl 想要include file2.jl就得

include("../../file2.jl")

有没有类似于Rust的crate,可以这样写

include("root/file2.jl")

似乎不行

include("filepath")

这种方式天生注定不能从项目根目录开始

但是又似乎可以这样

include(@root "filepath")

对于1.4之后的版本有一个pkgdir可以用:https://github.com/JuliaLang/julia/pull/33128

 ~/t/MyModule  tree .   
.
├── Manifest.toml
├── Project.toml
└── src
    ├── A
    │   └── B
    │       └── file1.jl
    ├── MyModule.jl
    └── file2.jl

3 directories, 5 files

 ~/t/MyModule  bat **.jl  
───────┬────────────────────────────────────────────────────────────────────────────────────
       │ File: src/A/B/file1.jl
───────┼────────────────────────────────────────────────────────────────────────────────────
   1   │ root = pkgdir(@__MODULE__)
   2   │ 
   3   │ include(joinpath(root, "src", "file2.jl"))
───────┴────────────────────────────────────────────────────────────────────────────────────
───────┬────────────────────────────────────────────────────────────────────────────────────
       │ File: src/file2.jl
───────┼────────────────────────────────────────────────────────────────────────────────────
   1   │ 
   2   │ @info "This is called from file2.jl"
───────┴────────────────────────────────────────────────────────────────────────────────────
───────┬────────────────────────────────────────────────────────────────────────────────────
       │ File: src/MyModule.jl
───────┼────────────────────────────────────────────────────────────────────────────────────
   1   │ module MyModule
   2   │ 
   3   │ include("A/B/file1.jl")
   4   │ 
   5   │ end
──────────────────────────────────────────────
1 个赞