Как перезагрузить модуль в активном сеансе Джулии после редактирования?
2018 Обновление: Не забудьте проверить все ответы, так как ответ на этот вопрос менялся несколько раз за эти годы. На момент этого обновленияRevise.jl
Ответ, вероятно, лучшее решение.
У меня есть файл "/SomeAbsolutePath/ctbTestModule.jl", содержимое которого:
module ctbTestModule
export f1
f1(x) = x + 1
end
Я запускаю Джулию в терминале, который запускает "~ / .juliarc.jl". Код запуска включает в себя строку:
push!(LOAD_PATH, "/SomeAbsolutePath/")
Следовательно, я могу сразу набрать в консоли Юлия:
using ctbTestModule
загрузить мой модуль. Как и ожидалосьf1(1)
возвращается2
, Теперь я вдруг решил, что хочу отредактироватьf1
, Я открываю "/SomeAbsolutePath/ctbTestModule.jl" в редакторе и изменяю содержимое на:
module ctbTestModule
export f1
f1(x) = x + 2
end
Сейчас я пытаюсь перезагрузить модуль в моей активной сессии Джулии. я попробую
using ctbTestModule
ноf1(1)
все еще возвращается2
, Далее я пытаюсь:
reload("ctbTestModule")
как предложеноВот, ноf1(1)
все еще возвращается2
, Наконец, я пытаюсь:
include("/SomeAbsolutePath/ctbTestModule.jl")
как предложеноВот, которыйне идеально, так как мне приходится вводить полный абсолютный путь, поскольку текущим каталогом может быть не "/ SomeAbsolutePath". Я получаю предупреждениеWarning: replacing module ctbTestModule
звучит многообещающе, ноf1(1)
все еще возвращается2
.
Если я закрою текущий сеанс Julia, начну новый и введитеusing ctbTestModule
Я теперь получаю желаемое поведение, т.е.f1(1)
возвращается3
, Но, очевидно, я хочу сделать этобез перезапуская Юлию.
Итак, что я делаю не так?
Другие детали: Julia v0.2 на Ubuntu 14.04.