无法运行Base.compilecache:"在路径"中找不到

时间:2018-05-31 12:52:46

标签: compilation julia

我现在正在尝试预编译Julia模块,以便它可以更快地运行。但是,对我来说,在模块声明之前编写__precompile__()似乎并没有在文件夹中生成任何缓存文件,这似乎很奇怪。

然后,我尝试使用以下步骤调用函数Base.compilecache

  1. 在项目文件夹
  2. 中启动REPL
  3. include("M.jl")
  4. Base.compilecache("M")
  5. 然而,即使前两步完成没有问题,并且我实际上可以运行模块中定义的函数,第三步抱怨"错误:ArgumentError:M未在路径"中找到,我仍然无法为模块生成任何缓存。

    我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

编译模块在用户定义的位置生成,通常在linux ~/.julia/lib/v0.6/中生成。我相信如果您查看那里,您会发现与您的模块的预编译版本对应的.ji文件。删除一个并尝试在julia会话中再次导入以确认它将尝试重新预编译;如果是,则表示您的__precompile__()指令正在运行。

此外,请注意push! .jl自定义模块的路径(即源代码.ji部分,而不是预编译的LOAD_PATH文件的路径)push!(LOAD_PATH, "./") }(即~/.julia/v0.6/)如果未在默认位置“安装”(通常为class IDeployer(abc.ABC): @staticmethod @abc.abstractmethod def get_host_type(): raise NotImplementedError() )。当您要导入模块时,Julia需要访问这两个模块。

(PS。如果更新模块,还应该看到预编译)