julia - 用 Julia 包填充可迭代对象

标签 julia

Pkg.status() 是众所周知的。但是,它输出到标准输出。我需要一个可迭代的包名称,比如列表或向量等等。使用 Suppressor 会很愚蠢。如何实现?

基于以下答案:

for v in values(Pkg.dependencies())
    println(v.name)
end

最佳答案

你要找的是dependencies()

julia> Pkg.dependencies()
Dict{Base.UUID, Pkg.API.PackageInfo} with 399 entries:
  UUID("49dc2e85-a5d0-5ad3-a950-438e2897f1b9") => PackageInfo("Calculus", v"0.5.1", "f641eb0a4f00c343bbc32346e1217b86f3ce9da…
  UUID("efcefdf7-47ab-520b-bdef-62a2eaa19f15") => PackageInfo("PCRE2_jll", v"10.40.0+0", nothing, false, false, false, false…
...

这会返回一个 pars 的迭代器。该对的值元素包含一个具有以下字段的 PackageInfo 元素:

julia> fieldnames(Pkg.API.PackageInfo)
(:name, :version, :tree_hash, :is_direct_dep, :is_pinned, :is_tracking_path, :is_tracking_repo, :is_tracking_registry, :git_revision, :git_source, :source, :dependencies)

这是一个示例用法:

julia> for (uuid, dep) in Pkg.dependencies()
            dep.is_direct_dep || continue
            dep.version === nothing && continue
            println("$(dep.name) $(dep.version)")
       end
ZipFile 0.10.0
DataFrames 1.4.1
Revise 3.4.0
Symbolics 4.11.1
BenchmarkTools 1.3.1
IJulia 1.23.3
...

关于julia - 用 Julia 包填充可迭代对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74070471/

相关文章:

julia - 在IJulia中使用for循环时如何显示图像?

dataframe - 使用多个条件选择数据框行的子集

matrix - Julia 相当于 Matlab 的 “logical” 矩阵

scope - 封装在函数中的全局变量

julia - 有没有办法将依赖字段传递给 Julia 结构?

matrix - 在 Julia 中将矩阵提升为幂

julia - 如何创建 n 个变量的函数 (Julia)

macros - 如何在 julia 中创建多行宏?

julia - 如何评估 Julia 一行中第一个罪恶情节的启动+执行时间?

if-statement - Julia 中的一个简单的 'if' 语句将我的主筛的运行时间增加了 15 倍——为什么?