2

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

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

如何解决这个问题?

这是为什么?

4

2 回答 2

5

就工作目录而言,Julia 和 Juno 的工作方式相同。它在您启动 Julia 时设置,并且在您调用之前保持不变cd——它根本不是由正在运行的文件决定的。

那怎么选?该julia命令从终端继承它,因此运行:

julia script.jl

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

julia dir/script.jl

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

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

对此的简单解决方案是完全避免依赖,而是pwd()使用@__FILE__它,它将始终引用当前正在执行的文件。例如,

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

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

于 2016-07-23T12:02:13.210 回答
1

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

至于在正确的目录中启动 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 :)

于 2016-07-22T02:49:55.963 回答