我在本地目录中有一个名为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。我该如何解决这个问题?
答案 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
加载该文件,请将当前路径推送至using
,LOAD_PATH
,现在为&#39 ;可以从push!(LOAD_PATH, pwd())
加载工作目录中的LocalModule。