我想动态使用模块,我知道他们的名字,但是创建一个模块,然后像这样使用:
using PyPlot
a = Module(:Plots)
using a
会产生一种情况,并告诉我a没有被定义。这是一个非常不直观的错误消息,因为当您在repl上执行此操作时,您可以在之后使用“a”。只要结合使用它就会告诉你它没有被定义。
答案 0 :(得分:3)
错误消息由Base.require
发出,因此您应该使用using Main.a
或using .a
代替:
需要(模块::符号)
如果尚未使用/ import,则此函数是使用/ import的实现的一部分 在Main 中定义。无论如何,它也可以直接调用以强制重新加载模块 是否之前已加载(例如,交互式开发库时)。 ... 搜索文件时,首先需要查找 Pkg.dir()下的包代码,然后尝试路径 在全局数组 LOAD_PATH 中。 require在所有平台上都区分大小写,包括那些平台 不区分大小写的文件系统,如macOS和Windows。
或者只需使用module
关键字即时定义模块:
module A
...
end
using A
对于现有模块,您还可以通过eval(using module-name)
动态使用它。