可以使用以下代码访问位于PROJECT_ROOT/lib/code.jl
的文件的项目根目录:
root = dirname(dirname(@__FILE__))
两次使用dirname()
似乎非常难看。有一个更好的方法吗?使用Ruby,我会使用这段代码:
root = File.expand_path('../', File.dirname(__FILE__))
答案 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
(或相应的相对路径)。