就我一直使用Julia而言,我一直认为包裹进口只能在顶级进行。但是,有没有人找到一个棘手/非官方的方法来使下面的工作?基本上,我想有条件地导入包。如果安装了软件包,我想导入它,但是如果没有安装,我不想包含它(所以Julia然后赢了并且自动安装它)。
if Pkg.installed("my_package") != Void
import my_package
else
## DO NOT IMPORT my_package
end
我理解这是不可能的,但考虑到朱莉娅的变化速度,如果有一种新方法,我不会感到惊讶。
答案 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()
功能如何运作的信息。