关于此问题,还有其他问题,但我想我尝试了推荐的解决方案,但没有成功。
因此,本着婴儿学习Julia的精神,我尝试在本地创建一个模块。我的模块的文件夹结构如下:
- TrimmedGrassmanAvwerage/
- src/
- TrimmedGrassmanAverage.jl
- Utils/
- dummy.jl
dummy.jl
的内容很简单:
function dummy(x)
x + oneunit(x)
end
类似地,TrimmedGrassmanAverage
的内容是:
module TrimmedGrassmanAverage
export Utils,
dummy
include("Utils/dummy.jl")
end
现在,在我的REPL中,我将执行以下操作:
julia> include("TrimmedGrassmanAverage/src/TrimmedGrassmanAverage.jl")
这将返回:
Main.TrimmedGrassmanAverage
现在我要做:
using TrimmedGrassmanAverage
这将返回错误:
ERROR: ArgumentError: Package TrimmedGrassmanAverage not found in current path:
- Run `Pkg.add("TrimmedGrassmanAverage")` to install the TrimmedGrassmanAverage package.
我认为做`include(“ ...”)会将包裹放在路径中,julia应该能够找到它。但是,显然还有更多的步骤需要解决。
编辑
但是,我可以这样做:
using Main.TrimmedGrassmanAverage
然后我可以打电话给
TrimmedGrassmanAverage.dummy(10);
我不确定为什么必须添加Main
名称空间,也不确定为什么由于导出dummy
函数而不能在没有Trimmed...
的情况下仅调用dummy
。
答案 0 :(得分:2)
如何加载模块。使用以下任一方法:
using Main.TrimmedGrassmanAverage
或
using .TrimmedGrassmanAverage
将具有相同的效果。原因是,当您运行include
时,模块将在Main
模块范围内定义。 using Something
确实在寻找软件包(并且您仅在文件中定义了模块)。包查找由LOAD_PATH
和DEPOT_PATH
变量控制(请参见https://docs.julialang.org/en/latest/stdlib/Pkg/#Glossary-1)。
编辑:实际上dummy
在Julia 1.0上已正确导出
julia> module TrimmedGrassmanAverage
export Utils,
dummy
function dummy(x)
x + oneunit(x)
end
end
Main.TrimmedGrassmanAverage
julia> using Main.TrimmedGrassmanAverage
julia> dummy(10)
11
至少在我的茱莉亚上。
您的代码的一个侧面注释是Utils
没有在模块中定义,您尝试导出它(请注意,在Julia中,从include
处获取文件并不重要-此功能的工作方式类似于复制粘贴代码)。