确定特定包的版本

时间:2014-09-03 02:54:30

标签: julia

如何获取特定包的版本号?

显而易见的方法是使用所有已安装的软件包获取字典,然后筛选出感兴趣的软件包:

pkgs = Pkg.installed();
pkgs["Datetime"]

获取所有已安装软件包的列表非常慢,特别是如果有很多软件包。

5 个答案:

答案 0 :(得分:7)

编辑:对于Julia版本1.0 +

Pkg.installed似乎已经对新的套餐系统“退步”了。 Pkg.installed没有参数。因此,OP的原始方法似乎是您目前可以做的最好的方法。

pkgs = Pkg.installed();
pkgs["Datetime"]

编辑:对于Julia版本高达0.6.4

您可以将字符串传递给Pkg.installed。例如:

pkgs = Pkg.installed("JuMP")

我经常用methods检查可用的调用参数。例如:

julia> methods(Pkg.installed)
# 2 methods for generic function "installed":
installed() at pkg/pkg.jl:122
installed(pkg::AbstractString) at pkg/pkg.jl:129

julia> Pkg.installed |> methods
# 2 methods for generic function "installed":
installed() at pkg/pkg.jl:122
installed(pkg::AbstractString) at pkg/pkg.jl:129

答案 1 :(得分:5)

我会尝试Pkg.status("PackageName")

这将打印出一些包含名称的模糊信息。

这是一个例子

julia> Pkg.status("QuantEcon")
 - QuantEcon                     0.0.1              master

答案 2 :(得分:0)

Julia 1.1中,您可以使用

(v1.1) pkg> status "name_of_the_package"

查找给定环境中任何软件包的版本。

答案 3 :(得分:0)

为了查看间接包含的软件包的版本(例如,顶层项目包括依赖于模块B的模块A,您需要在其中了解有关模块B的信息),您必须从直接将Manifest.toml导入,或者您必须从Context中引入Pkg对象。

下面是使用Julia 1.3.1进行的操作……从那时起,Pkg的内部结构可能会发生变化。

using Pkg

ctx = Pkg.Operations.Context()

# Get the version of CSV.jl
version = ctx.env.manifest[UUID("336ed68f-0bac-5ca0-87d4-7b16caf5d00b")].version
if version <= v"0.5.24"
    # handle some uniqueness about the specific version of CSV.jl here
end

或对Manifest.toml

执行相同操作
using Pkg

# given the path to the Manifest.toml file...
manifest_dict = Pkg.TOML.parsefile(manifest_path)

# look for a named package like `CSV`
package_dict = manifest_dict[package_name][1]
@show package_dict

答案 4 :(得分:0)

好吧,这在评论部分打印得不好...... 这是一个匹配名称而不是 UUID 的版本

using Pkg

m = Pkg.Operations.Context().env.manifest
v = m[findfirst(v -> v.name == "CSV", m)].version