Julia如何处理丢失的包?

Julia如何处理丢失的包?,julia,Julia,那么,如果您没有安装packageFoo,那么Julia使用Foo对语句做了什么呢?据我所知,Julia开始搜索Julia\u LOAD\u PATH,但如何搜索 在JULIA\u LOAD\u PATH的根级别,必须有一个名为Foo.jl的目录,其中Foo部分可能不区分大小写,而.jl后缀是可选的 在这个Foo.jl目录中,必须有一个源文件名Foo.jl,其中包含一个模块Foo?,使用隐式调用,间接调用: 上面的源代码显示,name上没有额外的操作,这意味着Foo部分应该区分大小写(当前取决于

那么,如果您没有安装package
Foo
,那么Julia使用Foo对语句
做了什么呢?据我所知,Julia开始搜索
Julia\u LOAD\u PATH
,但如何搜索

JULIA\u LOAD\u PATH
的根级别,必须有一个名为
Foo.jl
的目录,其中
Foo
部分可能不区分大小写,而
.jl
后缀是可选的


在这个
Foo.jl
目录中,必须有一个源文件名
Foo.jl
,其中包含一个
模块Foo

,使用隐式调用,间接调用:


上面的源代码显示,
name
上没有额外的操作,这意味着
Foo
部分应该区分大小写(当前取决于文件系统,请参见下面的注释)。而且目录名不必与文件名兼容,只要目录位于
LOAD\u路径中,它就可以是任何内容

嗯,案例可能取决于操作系统?@maasha是的,你是对的,但只要合并,这种行为可能会改变。我还认为“src”硬编码是不好的。可能在七月发表:这是Julia 0.5
function find_in_path(name::AbstractString, wd = pwd())
    isabspath(name) && return name
    base = name
    # this is why `.jl` suffix is optional
    if endswith(name,".jl")
        base = name[1:end-3]
    else
        name = string(base,".jl")
    end
    if wd !== nothing
        isfile(joinpath(wd,name)) && return joinpath(wd,name)
    end
    for prefix in [Pkg.dir(); LOAD_PATH]
        path = joinpath(prefix, name)
        isfile(path) && return abspath(path)
        path = joinpath(prefix, base, "src", name)
        isfile(path) && return abspath(path)
        path = joinpath(prefix, name, "src", name)
        isfile(path) && return abspath(path)
    end
    return nothing
end