Pkg.status()
是众所周知的。但是,它输出到标准输出。我需要可迭代的包名称,例如列表或向量等。使用 Suppressor 是很愚蠢的。如何才能实现这一目标?
基于以下答案:
for v in values(Pkg.dependencies())
println(v.name)
end
Run Code Online (Sandbox Code Playgroud)
您正在寻找的是dependencies()
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 元素:
\njulia> 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这是一个示例用法:
\njulia> 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