¿Cómo recargo un módulo en una sesión activa de Julia después de una edición?
Actualización 2018: Asegúrese de verificar todas las respuestas, ya que la respuesta a esta pregunta ha cambiado varias veces a lo largo de los años. En el momento de esta actualización, elRevise.jl
La respuesta es probablemente la mejor solución.
Tengo un archivo "/SomeAbsolutePath/ctbTestModule.jl", cuyo contenido es:
module ctbTestModule
export f1
f1(x) = x + 1
end
Enciendo a Julia en una terminal, que ejecuta "~ / .juliarc.jl". El código de inicio incluye la línea:
push!(LOAD_PATH, "/SomeAbsolutePath/")
Por lo tanto, puedo escribir inmediatamente en la consola de Julia:
using ctbTestModule
para cargar mi módulo Como se esperabaf1(1)
devoluciones2
. Ahora de repente decido que quiero editarf1
. Abro "/SomeAbsolutePath/ctbTestModule.jl" en un editor y cambio el contenido a:
module ctbTestModule
export f1
f1(x) = x + 2
end
Ahora trato de volver a cargar el módulo en mi sesión activa de Julia. lo intento
using ctbTestModule
perof1(1)
todavía regresa2
. Lo siguiente que intento:
reload("ctbTestModule")
como se sugiereaquí, perof1(1)
todavía regresa2
. Finalmente intento:
include("/SomeAbsolutePath/ctbTestModule.jl")
como se sugiereaquí, cual esno ideal ya que tengo que escribir la ruta absoluta completa ya que el directorio actual podría no ser "/ SomeAbsolutePath". Recibo el mensaje de advertenciaWarning: replacing module ctbTestModule
que suena prometedor, perof1(1)
todavía regresa2
.
Si cierro la sesión actual de Julia, empiezo una nueva y escribousing ctbTestModule
, Ahora obtengo el comportamiento deseado, es decirf1(1)
devoluciones3
. Pero obviamente quiero hacer estosin reiniciando a Julia.
Entonces, ¿qué estoy haciendo mal?
Otros detalles: Julia v0.2 en Ubuntu 14.04.