Julia 加载自定义模块时出错

标签 julia

我试图在 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"

有效。不过应该没必要吧?

最佳答案

将文件命名为模块是 Julia 中的惯例,尤其是在使用 usingimport 而不包含相应的模块定义文件时。

看看函数的定义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 将在 LOAD_PATH 中查找 foo.jl

关于 Julia 加载自定义模块时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32579939/

相关文章:

macros - Julia:如何在函数内创建与输入变量匹配的符号?

multithreading - 线程for循环中变量的范围?

csv - 在 Julia 中加载 CSV 失败

julia - 如何找到julialang中元素子集的最大值的索引?

user-interface - 如何在 Julia 中制作 GUI?

dataframe - 如何从 Julia 中的一列 DataFrame 中提取 column_name 字符串和数据向量?

julia - 带有嵌套在 for 循环中的 if block 的 Julia 变量的范围

plot - 在 Julia 中,绘制具有特定子标签的图形

macos - 如何运行 julia-lang 文件 - Mac OS X

git - Julia 1.6 : can't git clone using proxy (but git alone can) on Windows