Julia 0.4在Ubuntu的本地路径中找不到模块

时间:2015-10-12 17:05:56

标签: ubuntu julia

我在本地目录中有一个名为ModuleName.jl的文件。我相信这个文件包含一个有效的模块:

#!/usr/bin/env julia
module ModuleName
...
end

尝试加载模块julia -e "using ModuleName"时,我得到:

ERROR: ArgumentError: ModuleName not found in path
in require at ./loading.jl:233
in process_options at ./client.jl:284
in _start at ./client.jl:411

所有在本地目录中都与julia 0.3.11一致,但它与Julia 0.4.0失败。我使用64位Ubuntu 14.04。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:6)

目前(v0.4.0),using无法查看当前工作目录。但好消息是,只要实现了问题#4600(在v0.5.0之前),就可以使用using .ModuleName之类的东西在CWD中加载模块。

从v0.3到v0.4的这一未记录的更改归因于this commit。如果你想使using在v0.3中表现得像。您可以将此line更改为find_in_path(name)并从修改后的源代码重新编译julia。

答案 1 :(得分:3)

除了其他建议之外,我还通过为Julia加载路径(JULIA_LOAD_PATH)设置环境变量来包含本地目录。换句话说,运行Julia:

JULIA_LOAD_PATH=. julia

答案 2 :(得分:3)

如果您正在开发一些代码,这对我来说效果最好:在包/模块文件夹的根目录下创建一个main.jl。它包含

include("your-source.jl")

也许

include("your-tests.jl")

然后你可以在你的控制台中打开一个julia会话,在" your-source.jl"上工作,只要你想尝试一下就把这一行发送到终端。 完成后,您可以将包添加到加载路径中。

答案 3 :(得分:2)

当您致电error_reporting(E_ALL); ini_set('display_errors', 0); ini_set('log_errors', 1); ini_set('error_log', 'c:\Windows\Logs\PHP\php.log'); 时,Julia会查看已在using ModuleName常量中定义的路径。

要检查LOAD_PATH常量的内容,只需调用它:

LOAD_PATH

您目前的工作目录是什么?

julia>LOAD_PATH 
2-element Array{ByteString,1}:
 "C:\\Users\\AliReza\\AppData\\Local\\Julia-0.4.0\\local\\share\\julia\\site\\v0
.4"
 "C:\\Users\\AliReza\\AppData\\Local\\Julia-0.4.0\\share\\julia\\site\\v0.4"

如果文件存在,您可以julia> pwd() "C:\\Users\\AliReza\\AppData\\Local\\Julia-0.4.0" 与当前位置相关的文件:

include

如果您要加载julia> include("missedModule.jl") ERROR: could not open file C:\Users\AliReza\AppData\Local\Julia-0.4.0\missedModu le.jl in include at boot.jl:261 in include_from_node1 at loading.jl:304

中不存在的模块,您将收到其他错误
LOAD_PATH

如果julia> using LocalModule ERROR: ArgumentError: LocalModule not found in path in require at loading.jl:233 是本地工作目录中的文件,并且您希望按LocalModule.jl加载该文件,请将当前路径推送至usingLOAD_PATH,现在为&#39 ;可以从push!(LOAD_PATH, pwd())加载工作目录中的LocalModule。