动态使用

时间:2017-06-15 14:13:53

标签: julia

我想动态使用模块,我知道他们的名字,但是创建一个模块,然后像这样使用:

using PyPlot
a = Module(:Plots)
using a

会产生一种情况,并告诉我a没有被定义。这是一个非常不直观的错误消息,因为当您在repl上执行此操作时,您可以在之后使用“a”。只要结合使用它就会告诉你它没有被定义。

1 个答案:

答案 0 :(得分:3)

错误消息由Base.require发出,因此您应该使用using Main.ausing .a代替:

  

需要(模块::符号)

     

如果尚未使用/ import,则此函数是使用/ import的实现的一部分     在Main 中定义。无论如何,它也可以直接调用以强制重新加载模块     是否之前已加载(例如,交互式开发库时)。   ...   搜索文件时,首先需要查找 Pkg.dir()下的包代码,然后尝试路径     在全局数组 LOAD_PATH 中。 require在所有平台上都区分大小写,包括那些平台     不区分大小写的文件系统,如macOS和Windows。

或者只需使用module关键字即时定义模块:

module A
...
end

using A

对于现有模块,您还可以通过eval(using module-name)动态使用它。