Module 使用IPython/Jupyter开发Julia模块的好工作流是什么?

Module 使用IPython/Jupyter开发Julia模块的好工作流是什么?,module,ipython,julia,jupyter,Module,Ipython,Julia,Jupyter,我发现自己经常开发新的Julia模块,同时在工作中使用这些模块。所以我会有一个IPython(Jupyter)笔记本,上面有这样的东西: using DataFrames using MyModule x = myfunction(7, 3) 然后我会做一些类似的事情: using DataFrames using MyModule x = myfunction(7, 3) 但我必须修改这个函数,不幸的是,到那时我不能简单地修改它 using MyModule 再说一遍。我真的不知道为

我发现自己经常开发新的Julia模块,同时在工作中使用这些模块。所以我会有一个IPython(Jupyter)笔记本,上面有这样的东西:

using DataFrames
using MyModule
x = myfunction(7, 3)
然后我会做一些类似的事情:

using DataFrames
using MyModule
x = myfunction(7, 3)
但我必须修改这个函数,不幸的是,到那时我不能简单地修改它

using MyModule
再说一遍。我真的不知道为什么;我认为使用调用
只是声明可用的模块,以便让全局范围知道它们,然后当实际需要名称时,运行时在当前加载的模块中搜索定义(从
Main
开始)

因此,使用MyModule的
不应该仅仅刷新已经声明的模块中的项的定义吗?为什么我必须完全停止并重新启动内核才能使用更新后的函数?(是不是因为名称仅绑定到使用
函数
关键字声明的函数一次?)

我已经看过了,但我没有发现整个
Tmp
tst.jl
系统非常简单或优雅。。。至少是一本笔记本


有什么建议吗?

我认为Jupyter笔记本中有很多事实是用来处理数据的。Juno IDE用于处理代码


Jupyter非常适合使用笔记本风格的模块,您得到的输出是可复制的。Juno和REPL的开销较小,可以让您不断启动新会话(更快的测试,并修复您注意到的问题),打开多个选项卡以跟踪复杂模块的代码,并且可以使用调试器(在v0.5中)。它们针对不同的使用阶段解决不同的开发问题。如果您使用错误的工具进行错误的工作,我认为您是在逆势而行。

我很想知道您是否碰巧找到了答案。您可能想看看这个问题:这考虑了相同的问题,即重新加载模块。无论您是否可以这样做,我不确定您是否应该这样做。当你重新加载一个模块时,你仍然会得到早于该模块的对象,而且你永远不能确定你运行的是否是真正独立的。我的模块开发工作流程是运行测试套件。我可以随意处理REPL中的函数,但是如果我想查看模块范围的效果,我会运行测试。