Jul*_*ian 10 julia reproducible-research
如何获取Julia会话的导入/使用包列表?
Pkg.status()列出所有已安装的包.我对通过using ...或导入/加载的那些感兴趣import ...
它似乎whos()包含相关信息(名称和是否是模块).输出whos()可以在变量中捕获吗?
使用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)
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 ? Lazy到filter以避免包含它。
建议的答案不适用于 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))
| 归档时间: |
|
| 查看次数: |
932 次 |
| 最近记录: |