Wie lade ich ein Modul in einer aktiven Julia-Sitzung nach einer Bearbeitung neu?

Update 2018: Überprüfen Sie unbedingt alle Antworten, da sich die Antwort auf diese Frage im Laufe der Jahre mehrmals geändert hat. Zum Zeitpunkt dieses Updates war dieRevise.jl Antwort ist wahrscheinlich die beste Lösung.

Ich habe eine Datei "/SomeAbsolutePath/ctbTestModule.jl", deren Inhalt:

module ctbTestModule
export f1
f1(x) = x + 1
end

Ich starte Julia in einem Terminal, das "~ / .juliarc.jl" ausführt. Der Startcode enthält die Zeile:

push!(LOAD_PATH, "/SomeAbsolutePath/")

Daher kann ich sofort in die Julia-Konsole tippen:

using ctbTestModule

um mein Modul zu laden. Wie erwartetf1(1) kehrt zurück2. Jetzt entscheide ich mich plötzlich zu bearbeitenf1. Ich öffne "/SomeAbsolutePath/ctbTestModule.jl" in einem Editor und ändere den Inhalt in:

module ctbTestModule
export f1
f1(x) = x + 2
end

Ich versuche jetzt, das Modul in meiner aktiven Julia-Sitzung neu zu laden. ich versuche

using ctbTestModule

aberf1(1) kehrt immer noch zurück2. Als nächstes versuche ich:

reload("ctbTestModule")

wie vorgeschlagenHier, aberf1(1) kehrt immer noch zurück2. Zum Schluss versuche ich:

include("/SomeAbsolutePath/ctbTestModule.jl")

wie vorgeschlagenHier, welches istnicht ideal, da ich den vollständigen absoluten Pfad eingeben muss, da das aktuelle Verzeichnis möglicherweise nicht "/ SomeAbsolutePath" lautet. Ich bekomme die WarnmeldungWarning: replacing module ctbTestModule das klingt vielversprechend, aberf1(1) kehrt immer noch zurück2.

Wenn ich die aktuelle Julia-Sitzung beende, starte ich eine neue und tippe sie einusing ctbTestModuleBekomme ich jetzt das gewünschte Verhalten, d.h.f1(1) kehrt zurück3. Aber natürlich will ich das machenohne Julia neu starten.

Also, was mache ich falsch?

Weitere Details: Julia v0.2 auf Ubuntu 14.04.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage