【问题标题】:In my Julia 1.0.0 REPL, LOAD_PATH returns unexpected results在我的 Julia 1.0.0 REPL 中,LOAD_PATH 返回意外结果
【发布时间】:2018-09-18 18:16:47
【问题描述】:

我的 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.

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

julia> LOAD_PATH  # What is the output below?
3-element Array{String,1}:
 "@"
 "@v#.#"
 "@stdlib"

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

有什么建议吗?

【问题讨论】:

  • [征求意见] 嘿伙计,你的 Julia 编程经验如何?你觉得有什么大缺点吗?我正在考虑开始学习它
  • 我对自己的 Julia 编程经验非常非常满意。在我看来,该语言仍然需要一个更快、更准确的在线文档搜索引擎,但这应该随着时间的推移而出现。我还希望内置的 print/println 函数或标准库宏 @printf 有一个用于将逗号添加到数字的标志,但我确实在我的一个 stackoverflow 答案中提供了一种解决方法。 Julia 能够根据类型推断推断类型并为函数生成自定义机器代码,这对我来说是一个游戏规则改变者。我很乐意回答其他问题。

标签: julia


【解决方案1】:

你看到的是DEFAULT_LOAD_PATH

让我引用来自relevant section of the source code的cmets:

## 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

换句话说,

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

这可能应该在某处的 Pkg 文档中更准确地解释。介意filing an issue over there? (更新:见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"

【讨论】:

  • 很好的答案!谢谢。
  • @cristnbr 遗憾的是,LOAD_PATH 是 julia in-REPL 文档多么可怕的另一个例子。开发者应该花一些时间阅读the latest winner of the Ig-Nobel prizes
  • LOAD_PATH 只是当前的示例。在大约 95% 的 julia 功能中,REPL 内和“手动”质量之间的差异非常显着。将 REPL 文档与 R、octave、matlab 或 python 之类的文档进行比较。没有比较。一半的功能,包括重要的功能,都没有记录。这是不可接受的。
  • @TasosPapastylianou 作为 Julia 的新手,2018 年 9 月 4 日第一个代码,1.0.0 版本是我的第一个版本,我绝对同意你所说的。正如您所说,我正在从 Python 转向 Julia,我确实看到了文档质量的不同水平。但是,我非常喜欢 Julia,我忽略了文档问题,并希望文档随着语言的成熟而成熟。作为一个新人,知道我对 Julia 文档的各个方面感到不舒服的不仅仅是我自己。
  • @crstnbr 感谢您指出Base.load_path_expand.(LOAD_PATH.*"/test") 示例!
猜你喜欢
  • 2017-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多