非顶级包导入

时间:2016-03-31 05:32:42

标签: julia

就我一直使用Julia而言,我一直认为包裹进口只能在顶级进行。但是,有没有人找到一个棘手/非官方的方法来使下面的工作?基本上,我想有条件地导入包。如果安装了软件包,我想导入它,但是如果没有安装,我不想包含它(所以Julia然后赢了并且自动安装它)。

if Pkg.installed("my_package") != Void import my_package else ## DO NOT IMPORT my_package end

我理解这是不可能的,但考虑到朱莉娅的变化速度,如果有一种新方法,我不会感到惊讶。

1 个答案:

答案 0 :(得分:2)

正如你所说Pkg.installed()如果没有安装包,将返回一个Void类型。所以你可以创建一个函数来为你做这个检查:

function load_if_installed(package_name)
  if typeof(Pkg.installed(package_name)) == Void
    println("package is not installed")
  else
    # load in package after parsing command
    eval(parse("using $package_name"))
 end
end

load_if_installed("PyPlot")
> 
load_if_installed("AWS")
> package is not installed

尝试使用未安装的Julia 0.4.5 AWS并安装了PyPlot。 查看metaprogramming section,了解有关eval()parse()功能如何运作的信息。