在 JUNO 中评估 Julia 代码时工作目录的价值

Value of Working Directory At The Time of Evaluating a Julia Code in JUNO

通常在 IDE 中打开和 运行 文件时,当前路径将是文件所在的路径,即文件所在的位置。出于某种原因,经验表明 JUNO 中的 Julia 语言并非如此(编辑:在 Windows 中)。

结果是由于未找到文件,除非他们手动设置路径,否则会收到几个错误。

如何解决这个问题?

这是为什么?

不确定这是否是您的第一个问题,但您可以使用 julia 终端中的 pwd() 功能来检查您的当前目录。

至于在正确的目录中启动 julia,您有多种选择。您可以更改 IDE 调用的 julia 可执行文件(或者,在您的 .bashrc 文件中为其创建一个别名),这样 julia 就可以这样调用:

julia -P "cd(\"/path/to/my/desired/directory\")"

其中 -P 告诉 julia 执行命令但在解释器模式下继续

或者,您可以编辑 .juliarc.jl 文件以在其中添加您自己的自定义 cd("/my/directory") 命令。

具体到 JUNO,我不知道它可能必须解决这个问题的任何特殊属性,但是如果您想要双击 .jl 文件并打开它在正确的目录中使用 juno,您始终可以将 .jl 扩展名关联到一个小的 bash 脚本,该脚本当场创建 julia 别名或覆盖您的 .juliarc.jl 文件或类似的东西,然后在该文件上调用 Juno :)

Julia 和 Juno 在工作目录方面的工作方式相同。它在您启动 Julia 时设置并保持不变,直到您调用 cd – 它根本不是由 运行 文件决定的。

那么它是如何被选中的呢? julia 命令从终端继承它,所以 运行:

julia script.jl

将在 script.jl 的文件夹中工作,而

julia dir/script.jl

将在该文件夹上方的文件夹中工作。这只是您从中启动 Julia 的文件夹,脚本本身的位置同样没有区别。

当 Juno 启动 Julia 时,它必须选择在哪个文件夹中启动它,它会使用您的 "project folder" – 即您当前打开的文件夹。很简单,但如果您依赖 pwd() 并且您的脚本位于项目文件夹的子目录中,则可能会导致问题。

解决这个问题的简单方法是完全避免依赖 pwd() 并改用 @__FILE__,这将 始终 引用当前正在执行的文件。例如,

readcsv(joinpath(dirname(@__FILE__), "data.csv"))

这是在 Julia 中加载本地文件的最惯用的方式,但如果你真的开始使用 pwd() 那么你也可以使用以 [= 开头的命令集轻松更改工作目录20=].