Julia中项目根目录的绝对路径
可以使用以下代码访问位于Julia中项目根目录的绝对路径,julia,Julia,可以使用以下代码访问位于project\u root/lib/code.jl中的文件的项目根目录: root = dirname(dirname(@__FILE__)) root = File.expand_path('../', File.dirname(__FILE__)) 使用dirname()两次似乎很难看。有更好的方法吗?对于Ruby,我将使用以下代码: root = dirname(dirname(@__FILE__)) root = File.expand_path('../
project\u root/lib/code.jl
中的文件的项目根目录:
root = dirname(dirname(@__FILE__))
root = File.expand_path('../', File.dirname(__FILE__))
使用dirname()
两次似乎很难看。有更好的方法吗?对于Ruby,我将使用以下代码:
root = dirname(dirname(@__FILE__))
root = File.expand_path('../', File.dirname(__FILE__))
感谢您让我了解:
"/"*relpath((@__FILE__)*"/../..","/")
根据?relpath
,它给出了从文件系统中第二个参数的位置到第一个参数的路径。这比双dirname
解决方案好吗
相同精度的一个变体是:
normpath(joinpath(@__FILE__,"..",".."))
最接近Ruby的等价物可能是:
realpath(dirname(@__FILE__)*"/..")
我只是用
const PROJECT_ROOT = @__DIR__
从我的\u init.jl
文件中,该文件位于项目根目录中(在src
目录旁边),并为您提供规范路径
当从该目录中打开Julia会话时,我会自动执行我的\u init.jl
文件,方法是
isfile("_init.jl") && include(joinpath(pwd(), "_init.jl"))
在我的~/.julia/config/startup.jl
文件中。如果您从别处开始,则必须手动包括(“\u init.jl”)
它(或相应的相对路径)。我喜欢使用
module Foo
const PROJECT_ROOT = pkgdir(Foo)
end # module
其中,PROJECT\u ROOT
的定义也可以替换为
const PROJECT_ROOT = dirname(dirname(pathof(Foo)))
或者,你可以使用
const PROJECT_ROOT = pkdir(@__MODULE__)
要使其与操作系统无关,它必须是
Base.path\u separator*relpath(@\uu FILE\uu*“/../…”,Base.path\u separator)
。呃。normpath
版本在我看来是最稳定/最干净的。我无法得到第一个解决方案“/”*relpath(@\uuuuuu文件“/../…”,“/”
)。其他解决方案工作得很好:)奇怪,似乎是一个解析问题。用括号括住@\uuuuuuuuuu文件
可以解决这个问题<代码>重新路径((@uuuu文件)*“/....”,“/”)