工作目录会在函数内部更改吗?

时间:2018-11-20 22:55:34

标签: julia

我在Juno IDE中使用了Julia 1.0.1。

我写了一个模块MyModule

 myModule

 using Gadfly, DataFrames, Cairo, Fontconfig 

 function foo(N::Int64)

      grid = 1:N
      df = DataFrame(x = grid, y = grid .^2)

      p = plot(x = "x", y = "y");
      draw(PNG("figures/plot.png", 6inch, 3inch), p)

 end

 end

让我们将父目录称为“ Top”。我在main.jl中有一个名为Top/Julia的文件。我在Top/Julia/functions中也有一些辅助功能。脚本main.jl由以下命令组成:

 using MyModule

 include("functions/auxiliaryFunction.jl")

 N = 10

 foo(10)

运行此代码时,

  1. include("functions/auxiliaryFunction.jl")命令运行正常。

  2. 文件plot.png是在目录Top/figures内部而不是Top/Julia/figures

  3. 中创建的

如果我在REPL中运行pwd(),它将返回".../Top"。因此,似乎正在发生的事情是主脚本中的工作目录是文件本身(或Juno中的“项目”的位置...有点困惑)的位置,而函数的工作目录是文件的位置它导入的模块中的调用是REPL的工作目录。这是正确的还是我错过了什么?解决此问题的标准方法是什么-将工作目录添加为函数的参数?

编辑1:如果添加

 a = pwd()
 println("$a")

返回脚本main.jl,它返回

 .../Top

编辑2:在Atom中打开main.jl时,顶部栏显示“ main.jl ---〜/ Top”

1 个答案:

答案 0 :(得分:0)

我注意到Atom / Juno IDE有时会对工作目录产生一些怪异的影响。我认为这与项目管理有关。您是否尝试过关闭Juno,然后通过打开main.jl文件夹中的(...)/top/Julia重新启动它?代码对我来说似乎没问题。