Julia中项目根目录的绝对路径

时间:2016-02-17 20:01:19

标签: julia

可以使用以下代码访问位于PROJECT_ROOT/lib/code.jl的文件的项目根目录:

root = dirname(dirname(@__FILE__))

两次使用dirname()似乎非常难看。有一个更好的方法吗?使用Ruby,我会使用这段代码:

root = File.expand_path('../', File.dirname(__FILE__))

3 个答案:

答案 0 :(得分:3)

感谢您让我了解:

"/"*relpath((@__FILE__)*"/../..","/")

根据?relpath,它给出了从文件系统中第二个参数的位置到第一个参数的路径。这比双dirname解决方案好吗?

同样善良的变体是:

normpath(joinpath(@__FILE__,"..",".."))

最接近Ruby的等价物可能是:

realpath(dirname(@__FILE__)*"/..")

答案 1 :(得分:0)

我喜欢用

module Foo

const PROJECT_ROOT = pkgdir(Foo)

end # module

其中PROJECT_ROOT的定义也可以替换为

const PROJECT_ROOT = dirname(dirname(pathof(Foo)))

或者,你可以使用

const PROJECT_ROOT = pkdir(@__MODULE__)

答案 2 :(得分:-1)

我只是用

ratingChanged()

从我的const PROJECT_ROOT = @__DIR__ 文件内部,该文件位于项目根目录(位于_init.jl目录的旁边)中,并为您提供了规范的路径。

当我从目录中打开Julia会话时,我的src文件会自动执行

_init.jl

在我的isfile("_init.jl") && include(joinpath(pwd(), "_init.jl")) 文件中。如果您是在其他地方启动Julia的,则必须手动~/.julia/config/startup.jl(或相应的相对路径)。