【问题标题】:julia Error loading custom modulesjulia 加载自定义模块时出错
【发布时间】:2015-09-15 07:16:31
【问题描述】:

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

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

【问题讨论】:

  • 我猜你的路径是这样的 ~/.../module ?如果是这样,请不要使用此 ~ 符号。
  • 感谢您的回复。不是,不是。这是完整路径“/home/.../modules”
  • 在 julia 中运行 LOAD_PATH 后的输出是什么?
  • 三元数组{Union(UTF8String,ASCIIString),1}: "/usr/local/share/julia/site/v0.3" "/usr/share/julia/site/v0 .3" "/home/.../julia/modules/"
  • 嗯……那是有线的。这是我的测试结果:julia> pwd() =>"/home/gnimuc"julia> LOAD_PATH =>"/home/gnimuc/foo/" ,我可以运行using foo 没有任何错误。

标签: julia


【解决方案1】:

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

看一下using隐式调用的函数require的定义,用于加载下面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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    相关资源
    最近更新 更多