检查是否可以装入包裹

时间:2019-08-08 06:26:37

标签: module julia

我正在创建一个模块A,该模块可以扩展模块B中定义的功能(这意味着模块A可以具有using Bimport B)。但是,除非用户已经将B添加到他们的系统中,否则我不想加载模块B。示例代码如下:

module A

struct MyStruct{T}; end

if(#= module B exists =#)
    import B: myFn

    function myfn(x::MyStruct)
        # ...
    end
end

一个类似的例子是在C ++头文件中使用#ifndef ... #define ... #endif。我有办法检查用户是否添加了B,这是在构建模块时使用的良好模式吗?

1 个答案:

答案 0 :(得分:0)

要检查用户系统上是否安装了软件包,请浏览Base方法Pkg.Installed(在此处了解更多信息):

"moduleB" ∈ keys(Pkg.installed())
如果已安装请求的“ moduleB”,则

返回True。

如果您需要确定已加载软件包,请使用isdefined()

(Main, :moduleB)

希望有帮助!

相关问题