Module 有没有办法撤销Julia中的“using”?

Module 有没有办法撤销Julia中的“using”?,module,julia,Module,Julia,假设在Julia控制台中我是这样做的 using Gadfly 然后意识到我实际上想要使用一个不同的绘图命令 using Winston 似乎plot()仍将使用Gadfly版本。有没有办法停止使用牛虻 using !Gadfly !using Gadfly unuse Gadfly 诸如此类的事情?正如其他人所指出的,您不能在Julia中卸载包。唯一的方法是重新启动juliarepl。但是,如果要使用包中的特定函数,可以使用Winston.plot()或Gadfly.plot()。因此,

假设在Julia控制台中我是这样做的

using Gadfly
然后意识到我实际上想要使用一个不同的绘图命令

using Winston
似乎
plot()
仍将使用Gadfly版本。有没有办法停止使用牛虻

using !Gadfly
!using Gadfly
unuse Gadfly

诸如此类的事情?

正如其他人所指出的,您不能在Julia中卸载包。唯一的方法是重新启动juliarepl。但是,如果要使用包中的特定函数,可以使用
Winston.plot()
Gadfly.plot()
。因此,这将确保您使用的是所需名称空间中的正确函数。

正如@Jubobs在链接中提到的,目前没有一种方法可以选择性地停止使用包,或者选择性地从REPL中删除定义(如果您熟悉,类似于Matlab的
clear
命令)。所以简单的答案是否定的

但是,您可以使用
Gadfly.plot()
Winston.plot()
引用特定模块中的函数。如果您已经编写了代码,这并不能为您的问题提供解决方案,但它仍然是未来工作的一个选项

workspace()
命令,但该命令将
Main
模块中删除所有内容,并导入一个新的环境。将丢失您定义的所有函数和变量。。。所以明智地使用它


正如@Matt B所指出的,实际上并不会丢失函数和变量。它们被移动到名为
LastMain
的模块中。因此,如果我定义了一个名为
myfunc()
的函数,并且我调用了
workspace()
,那么尝试在REPL处调用
myfunc()
将导致
UndefVarError
。但是,您仍然可以通过调用
LastMain.myfunc()
来访问此函数。这适用于调用
workspace()
之前在REPL中定义的任何内容

相关:你不会真的丢失它们,它们只是被藏在
LastMain
模块中。