Изменяется ли рабочий каталог внутри функции? - PullRequest
0 голосов
/ 21 ноября 2018

Я использую Julia 1.0.1 с Juno IDE.

Я написал модуль 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

Если я запускаю pwd() в REPL,возвращается ".../Top".Так что, похоже, происходит то, что рабочий каталог в главном скрипте - это местоположение самого файла (или «проекта» в Juno ... отчасти смущен этим), тогда как рабочий каталог его функцийвызовы в модулях, которые он импортирует, является рабочим каталогом REPL.Это правильно или я что-то упустил?Каково стандартное решение этой проблемы - добавить рабочий каталог в качестве аргумента функции?

Редактировать 1: Если я добавлю

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

к сценарию main.jl, он вернет

 .../Top

Редактировать 2: Когда в Atom открыт main.jl, на верхней панели отображается «main.jl --- ~ / Top»

1 Ответ

0 голосов
/ 21 ноября 2018

Я заметил, что Atom / Juno IDE может иногда оказывать странное влияние на рабочий каталог.Я думаю, что это связано с управлением проектом.Вы пытались закрыть Juno и перезапустить его, открыв main.jl в папке (...)/top/Julia?Код мне кажется нормальным.

...