我正在尝试在julia中加载自定义模块,但我总是收到以下错误:
ERROR: foo not found
in require at loading.jl:47
其中foo是以下模块:
module foo
bar() = "foo"
export bar
end
位于" / home /.../ julia / modules /"我还补充说:
push!(LOAD_PATH, "/home/.../julia/modules/")
到我的〜/ .juliarc.jl文件。我错过了什么?顺便说一句,我也重新安装了julia v0.3.10,没效果。
还有一件事,如果我包含该文件,我可以使用该模块:
> include("../modules/test.jl")
> using foo
> bar()
> "bar"
的工作原理。但它没有必要,对吗?
答案 0 :(得分:4)
将文件命名为模块是Julia中的约定,尤其是在使用using
和import
而不包含相应的模块定义文件时。
查看函数require
的定义,using
隐式调用该函数来加载下面loading.jl的包。
...
...
function find_in_path(name::AbstractString, wd = pwd())
isabspath(name) && return name
base = name
if endswith(name,".jl")
base = name[1:end-3]
else
name = string(base,".jl")
end
...
...
如果您运行using foo
,julia会在foo.jl
中查找LOAD_PATH
。