在我的 Julia 1.0.0 REPL 中,LOAD_PATH 返回意外结果

Jul*_*ner 5 julia

我的 Julia REPL 帮助为 LOAD_PATH 提供了以下内容:

help?> LOAD_PATH
search: LOAD_PATH

  LOAD_PATH

  An array of paths for using and import statements to consdier as project environments or package directories when
  loading code. See Code Loading.
Run Code Online (Sandbox Code Playgroud)

这是我在提示符下的 LOAD_PATH 输出:

julia> LOAD_PATH  # What is the output below?
3-element Array{String,1}:
 "@"
 "@v#.#"
 "@stdlib"
Run Code Online (Sandbox Code Playgroud)

上面显示的 LOAD_PATH 输出看起来很奇怪。

有什么建议么?

crs*_*nbr 5

你在那里看到的是DEFAULT_LOAD_PATH.

让我引用源代码相关部分的注释:

## LOAD_PATH, HOME_PROJECT & ACTIVE_PROJECT ##

# JULIA_LOAD_PATH: split on `:` (or `;` on Windows)
# first empty entry is replaced with DEFAULT_LOAD_PATH, the rest are skipped
# entries starting with `@` are named environments:
#  - the first three `#`s in a named environment are replaced with version numbers
#  - `@stdlib` is a special name for the standard library and expands to its path
Run Code Online (Sandbox Code Playgroud)

换句话说,

  • "@": 用于加载相对于当前路径的东西(这里不完全确定,请参阅下面的更新)
  • "@v#.#": 将成为环境路径v1.0(假设您使用的是 1.0)。
  • "@stdlib":将成为标准库的路径

这可能应该在 Pkg 文档中的某个地方进行更准确的解释。介意在那里提出问题吗?(更新:请参阅https://github.com/JuliaLang/Pkg.jl/issues/757

更新:

人们可以尝试一下该方法,Base.load_path_expand(a::AbstractString)看看事情最终会变成什么样子:

julia> Base.load_path_expand.(LOAD_PATH.*"/test")
3-element Array{String,1}:
 "\\test\\Project.toml"
 "C:\\Users\\carsten\\.julia\\environments\\v1.0\\test\\Project.toml"
 "C:\\Users\\carsten\\.julia\\environments\\stdlib\\test\\Project.toml"
Run Code Online (Sandbox Code Playgroud)