2018年更新:请务必检查所有回复,因为这个问题的答案多年来已经多次改变.在此更新时,Revise.jl答案可能是最佳解决方案.
我有一个文件"/SomeAbsolutePath/ctbTestModule.jl",其内容是:
module ctbTestModule
export f1
f1(x) = x + 1
end
Run Code Online (Sandbox Code Playgroud)
我在一个运行"〜/ .juliarc.jl"的终端中点燃Julia.启动代码包括以下行:
push!(LOAD_PATH, "/SomeAbsolutePath/")
Run Code Online (Sandbox Code Playgroud)
因此我可以立即输入Julia控制台:
using ctbTestModule
Run Code Online (Sandbox Code Playgroud)
加载我的模块.正如预期的f1(1)回报2.现在我突然决定要编辑f1.我在编辑器中打开"/SomeAbsolutePath/ctbTestModule.jl",并将内容更改为:
module ctbTestModule
export f1
f1(x) = x + 2
end
Run Code Online (Sandbox Code Playgroud)
我现在尝试在我的活跃Julia会话中重新加载模块.我试试
using ctbTestModule
Run Code Online (Sandbox Code Playgroud)
但f1(1)仍然返回2.接下来我尝试:
reload("ctbTestModule")
Run Code Online (Sandbox Code Playgroud)
正如这里所建议的,但f1(1)仍然会回归2.最后,我尝试:
include("/SomeAbsolutePath/ctbTestModule.jl")
Run Code Online (Sandbox Code Playgroud)
正如这里所建议的那样,这是不理想的,因为我必须输入完整的绝对路径,因为当前目录可能不是"/ SomeAbsolutePath".我收到的警告信息Warning: replacing module ctbTestModule听起来很有希望,但f1(1)仍然会返回2.
如果我关闭当前的Julia会话,启动一个新会话并输入using ctbTestModule,我现在得到所需的行为,即f1(1)返回3.但显然我想在不 …