julia中读所有已经安装的包的信息,以便对包进行管理
2021-08-04 本文已影响0人
昵称违法
需求:读取本机的包的信息,并生成一个dataframe表
使用场景:读取安装的包的信息,以便对包进行管理【卸载、升级...】
一般Pkg.status()不带参的时候,直接把结果输出到”控制台“,你也可以把它输出到IOBuffer中,然后用take出来,通过字符串分析,生成一个DataFrame表。
1、运行结果
image.png2、代码
"""
读取本机所安装的包的信息,返回DataFrame
====out====
DataFrame
Row │ id name ver
│ Any Any Any
─────┼───────────────────────────────────────
1 │ c52e3926 Atom v0.12.32
2 │ 6e4b80f9 BenchmarkTools v1.0.0
3 │ 336ed68f CSV v0.8.5
4 │ 052768ef CUDA v3.2.1
5 │ aaaa29a8 Clustering v0.14.2
6 │ 861a8166 Combinatorics v1.0.2
7 │ a0b5b9ef Cxx v0.4.0
"""
function get_pkg_info()
io = IOBuffer()
Pkg.status(;io)
text = String(take!(io))
lines = split(text,"\n") .|> strip #拆行,并去除各行的首位空格
pkgs_info = DataFrame(id = [],name = [],ver = [])
for (idx,line) in zip(1:length(lines),lines)
#println(idx," ",line)
if idx > 1
if isempty(line)
continue
end
line_ary = split(line," ") .|> string
#println(line_ary)
id = line_ary[1] |>s->replace(s,"["=>"") |>s->replace(s,"]"=>"")
name = line_ary[2]
ver = length(line_ary) == 2 ? "" : line_ary[3]
push!(pkgs_info,[id,name,ver])
else
end
end
return pkgs_info
end
#测试代码
df = get_pkg_info()
df |> println
3、用Pkg进行包的管理【请参考julia官网信息】
.....