Compilation 无法运行Base.compilecache:";在路径中找不到“;
我现在正在尝试预编译一个Julia模块,以便它可以运行得更快。然而,我觉得奇怪的是,在模块声明之前编写Compilation 无法运行Base.compilecache:";在路径中找不到“;,compilation,julia,Compilation,Julia,我现在正在尝试预编译一个Julia模块,以便它可以运行得更快。然而,我觉得奇怪的是,在模块声明之前编写\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu()似乎并没有在文件夹中生成任何缓存文件 然后,我尝试通过以下步骤调用函数Base.compilecache: 在项目文件夹中启动REPL 包括(“M.jl”) Base.compilecache(“M”) 然而,尽管前两个步骤完成时没有问题,而且我实际上可以运行模块中
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu()
似乎并没有在文件夹中生成任何缓存文件
然后,我尝试通过以下步骤调用函数Base.compilecache
:
包括(“M.jl”)
Base.compilecache(“M”)
我在这里做错了什么?编译模块是在用户定义的地方生成的,在linux中通常是
~/.julia/lib/v0.6/
。我敢肯定,如果您查看一下,您会发现与模块的预编译版本相对应的.ji
文件。删除一个并在julia会话中再次尝试导入,以确认它将再次尝试预编译;如果是,则表示您的\uuuu precompile\uuuu()
指令正在工作
此外,要小心推自定义模块的路径(即源代码.jl
部分,而不是预编译的.ji
文件的路径)到加载路径
(即推送!(加载路径,“./”
)的路径,如果未在默认位置“安装”(通常~/.julia/v0.6/
)。当您要导入模块时,Julia需要访问这两者
(顺便说一句,如果你更新了你的模块,你应该会看到一个预编译发生)顺便说一句,我想这只是问题本身的一个输入错误,但是指令是
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。这可能是什么原因?可能有什么东西使模块无法编译吗?啊,对不起,刚刚发现了你问题中的确切措辞。不包括该模块<代码>导入
它。我相信,只有当您尝试使用模块导入或时,才会进行预编译检查。如果您只是包含它,实际上您是在将代码转储到当前环境中,因此据我所知,没有尝试预编译模块。这也是关于“必须将当前路径加载到load_path变量”的要点。Julia只在加载路径中定义的目录中查找模块。要导入当前目录中的模块,您需要首先将此目录添加到LOAD\u路径中,以便julia可以找到它。谢谢。使用import
最后让Julia预编译模块。但是,这是否意味着任何想要运行此程序的人都必须首先更改其julia
实例的LOAD\u路径,然后导入该模块?我想另一种方法是将程序作为Pkg分发,然后让其他用户安装Pkg。然而,如果到目前为止该程序只是一个脚本集合,那么似乎没有其他方法可以做到这一点?根本没有。是的,最好的方法是创建一个包,但您也可以将模块与脚本一起分发(根据我对您最近的另一个问题的回答),并在那里准备任何LOAD\u PATH
指令,以及任何其他环境变量初始化或输入解析等。