首页 > 解决方案 > 无法运行 Base.compilecache:“在路径中找不到”

问题描述

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

然后,我尝试Base.compilecache通过以下步骤调用该函数:

  1. 在项目文件夹中启动 REPL
  2. include("M.jl")
  3. Base.compilecache("M")

然而,即使前两个步骤没有问题完成并且我实际上可以运行模块中定义的函数,第三步抱怨“错误:ArgumentError:M not found in path”,我似乎仍然无法生成任何缓存模块。

我在这里做错了什么?

标签: compilationjulia

解决方案


编译的模块是在用户定义的地方生成的,通常在 linux 中~/.julia/lib/v0.6/。我敢肯定,如果您在那里查看,您会找到.ji与模块的预编译版本相对应的文件。删除一个并尝试在 julia 会话中再次导入,以确认它将尝试重新进行预编译;如果是这样,则意味着您的__precompile__()指令正在工作。

此外,请注意push!自定义模块的路径(即源代码.jl部分,而不是预编译.ji文件的路径)到LOAD_PATH(ie push!(LOAD_PATH, "./")),如果它没有“安装”在默认位置(通常~/.julia/v0.6/)。当您要导入模块时,Julia 需要访问这两者。

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


推荐阅读