Julia中加载/导入的包列表

Jul*_*ian 10 julia reproducible-research

如何获取Julia会话的导入/使用包列表?

Pkg.status()列出所有已安装的包.我对通过using ...或导入/加载的那些感兴趣import ...

它似乎whos()包含相关信息(名称和是否是模块).输出whos()可以在变量中捕获吗?

Iai*_*ing 6

使用names,例如

julia> using JuMP

julia> using Gurobi

julia> names(Main)
13-element Array{Symbol,1}:
 :Calculus
 :ans
 :JuMP
 :DualNumbers
 :Graphs
 :DataStructures
 :ReverseDiffSparse
 :MathProgSolverInterface
 :Base
 :MathProgBase
 :Core
 :Gurobi
 :Main
Run Code Online (Sandbox Code Playgroud)


one*_*ute 6

using Lazy
children(m::Module) =
  @>> names(m, true) map(x->m.(x)) filter(x->isa(x, Module) && x ? m)
Run Code Online (Sandbox Code Playgroud)

children(Main) 然后会给你一个当前加载的模块列表。


编辑:我在这里将 Lazy.jl 用于画眉宏 ( @>>),但您可以轻松地重写它:

children(m::Module) =
  filter(x->isa(x, Module) && x ? m, map(x->m.(x), names(m, true)))
Run Code Online (Sandbox Code Playgroud)

或者,您可以添加&& x ? Lazyfilter以避免包含它。


Prz*_*fel 6

建议的答案不适用于 Julia 1.0,因此这里是 Julia 1.0 版本:

filter((x) -> typeof(eval(x)) <:  Module && x ? :Main, names(Main,imported=true))
Run Code Online (Sandbox Code Playgroud)


小智 5

我非常喜欢Przemyslaw 的回答,只想对它稍作修改,用:Main可选参数替换显式(作为新手,我不允许输入评论)

loadedModules(m::Module = Main) = filter(x -> eval(x) isa Module && x ? Symbol(m), names(m, imported = true))