用 Julia 包填充可迭代对象

Tra*_*.eu 3 julia

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

基于以下答案:

for v in values(Pkg.dependencies())
    println(v.name)
end
Run Code Online (Sandbox Code Playgroud)

Prz*_*fel 5

您正在寻找的是dependencies()

\n
julia> Pkg.dependencies()\nDict{Base.UUID, Pkg.API.PackageInfo} with 399 entries:\n  UUID("49dc2e85-a5d0-5ad3-a950-438e2897f1b9") => PackageInfo("Calculus", v"0.5.1", "f641eb0a4f00c343bbc32346e1217b86f3ce9da\xe2\x80\xa6\n  UUID("efcefdf7-47ab-520b-bdef-62a2eaa19f15") => PackageInfo("PCRE2_jll", v"10.40.0+0", nothing, false, false, false, false\xe2\x80\xa6\n...\n
Run Code Online (Sandbox Code Playgroud)\n

这将返回 pars 的迭代器。该对的 value 元素包含具有以下字段的 PackageInfo 元素:

\n
julia> fieldnames(Pkg.API.PackageInfo)\n(:name, :version, :tree_hash, :is_direct_dep, :is_pinned, :is_tracking_path, :is_tracking_repo, :is_tracking_registry, :git_revision, :git_source, :source, :dependencies)\n
Run Code Online (Sandbox Code Playgroud)\n

这是一个示例用法:

\n
julia> for (uuid, dep) in Pkg.dependencies()\n            dep.is_direct_dep || continue\n            dep.version === nothing && continue\n            println("$(dep.name) $(dep.version)")\n       end\nZipFile 0.10.0\nDataFrames 1.4.1\nRevise 3.4.0\nSymbolics 4.11.1\nBenchmarkTools 1.3.1\nIJulia 1.23.3\n...\n
Run Code Online (Sandbox Code Playgroud)\n