Como recarregar um módulo em uma sessão Julia ativa após uma edição?
Atualização de 2018: Verifique todas as respostas, pois a resposta a esta pergunta mudou várias vezes ao longo dos anos. No momento desta atualização, oRevise.jl
a resposta é provavelmente a melhor solução.
Eu tenho um arquivo "/SomeAbsolutePath/ctbTestModule.jl", cujo conteúdo é:
module ctbTestModule
export f1
f1(x) = x + 1
end
Eu inicio Julia em um terminal, que executa "~ / .juliarc.jl". O código de inicialização inclui a linha:
push!(LOAD_PATH, "/SomeAbsolutePath/")
Portanto, eu posso digitar imediatamente no console Julia:
using ctbTestModule
carregar meu módulo. Como esperadof1(1)
retorna2
. Agora, de repente, decido que quero editarf1
. Eu abro "/SomeAbsolutePath/ctbTestModule.jl" em um editor e altero o conteúdo para:
module ctbTestModule
export f1
f1(x) = x + 2
end
Agora tento recarregar o módulo na minha sessão Julia ativa. eu tento
using ctbTestModule
masf1(1)
ainda retorna2
. Em seguida, tento:
reload("ctbTestModule")
como sugeridoaqui, masf1(1)
ainda retorna2
. Por fim, tento:
include("/SomeAbsolutePath/ctbTestModule.jl")
como sugeridoaqui, qual énão ideal, pois tenho que digitar o caminho absoluto completo, pois o diretório atual pode não ser "/ SomeAbsolutePath". Recebo a mensagem de avisoWarning: replacing module ctbTestModule
o que parece promissor, masf1(1)
ainda retorna2
.
Se eu fechar a sessão atual da Julia, inicie uma nova e digiteusing ctbTestModule
, Agora obtenho o comportamento desejado, ou seja,f1(1)
retorna3
. Mas, obviamente, eu quero fazer issosem reiniciando Julia.
Então, o que estou fazendo de errado?
Outros detalhes: Julia v0.2 no Ubuntu 14.04.