Julia Pkg.installed(“anInvalidPackage”)是否应不返回任何内容或引发错误?
参考本段: 已安装(包装)→ Void |版本号Julia Pkg.installed(“anInvalidPackage”)是否应不返回任何内容或引发错误?,julia,Julia,参考本段: 已安装(包装)→ Void |版本号 If pkg is installed, return the installed version number, otherwise return nothing. 从 Pkg.installed(“anInvalidPackage”)函数应该返回nothing,但它会抛出一个错误: julia> VERSION v"0.5.0" julia> Pkg.installed("anInvalidPackage") ERROR: an
If pkg is installed, return the installed version number, otherwise return nothing.
从
Pkg.installed(“anInvalidPackage”)
函数应该返回nothing
,但它会抛出一个错误:
julia> VERSION
v"0.5.0"
julia> Pkg.installed("anInvalidPackage")
ERROR: anInvalidPackage is not a package (not registered or installed)
in installed(::String) at .\pkg\entry.jl:123
in (::Base.Pkg.Dir.##2#3{Array{Any,1},Base.Pkg.Entry.#installed,Tuple{String}})
() at .\pkg\dir.jl:31
in cd(::Base.Pkg.Dir.##2#3{Array{Any,1},Base.Pkg.Entry.#installed,Tuple{String}
}, ::String) at .\file.jl:48
in #cd#1 at .\pkg\dir.jl:31
in installed(::String) at .\pkg\pkg.jl:129
编辑:如果我们看一下base中Pkg模块的源代码,它应该会提供一些线索:
function installed(pkg::AbstractString)
avail = Read.available(pkg)
if Read.isinstalled(pkg)
res = typemin(VersionNumber)
### some libgit2 stuff ###
end
isempty(avail) && throw(PkgError("$pkg is not a package (not registered or installed)"))
return nothing # registered but not installed
end
从最后两行可以看出,如果包未注册或安装,Julia将抛出一个错误。但是,如果包已注册但未安装,则不会抛出任何错误,并且不会返回任何内容
所以
但是:
我同意文档应该更清楚地说明这一点……奇怪的是,它从字符串中删除了“an”…@daycaster打字错误“好吧,沃森,这就省去了那一行查询!”:)
var = Pkg.installed("AMD") # returns nothing for me as I don't have AMD installed
# but it is a registered package
altvar = Pkg.installed("this_is_not_the_name_of_any_package")
# will throw an error