繁体   English   中英

如何在Julia中正确加载模块?

[英]How to properly load a module in Julia?

我一直在阅读很多Julia文档(版本0.4),但仍然遇到加载Julia文件的问题。 这似乎应该很容易。 那么,简单明了,我们如何在当前代码中直接使用其他文件中的Julia代码? 而且,作为一个相关的,有用的奖励,是否有任何历史或语言设计决策,理解,将阐明情况?

PS我用的是0.4。


如果你想要问题细节,这里有一些我正在处理的事情:

第一

使用REPL,我想使用我在不同文件中编写的一些函数。 据说,我应该能够像这样加载所述文件:

julia> using Foobar

无论我做什么,这只会给我ArgumentErrors。 在尝试使用之前我尝试过包含它:

julia> include("Foobar.jl")
julia> using Foobar

我还尝试在尝试使用之前更新加载路径:

julia> push!(LOAD_PATH, "/Users/me/julia")
julia> using Foobar

第二

当我尝试通过在使用之前包含文件来解决第一个问题时,我得到任何包含以下行的错误: using ... 消息是在路径中找不到模块。 或者换句话说,我正在尝试在当前工作目录中加载一个模块,该模块依赖于当前工作目录中的另一个模块。 当我包含我正在尝试加载的文件时,它会尝试查找依赖项而不能。

第三

我尝试过相对路径。 即我与.jl文件位于同一目录中并执行:

julia> using .Foobar

如果使用include("/path/to/myscript.jl")那么您应该可以访问使用include()调用的文件中定义的任何函数,对象等。 不需要额外的using呼叫。

这里有一个答案,提供了有关创建整个包的详细信息(而不仅仅是上面示例中的单个脚本),如何执行它们以及using术语如何using它们: julia:创建并使用本地包没有互联网 例如,包必须安装在相对于其他julia文件的特定路径中,而不仅仅安装在脚本所在的任意工作目录中。

另请参阅此处以获取有关包的更长教程。

它似乎在这里工作得很好:

julia> push!(LOAD_PATH, "/Users/me/julia")
2-element Array{ByteString,1}:
 "/Applications/Julia-0.4.5.app/Contents/Resources/julia/local/share/julia/site/v0.4"
 "/Users/me/julia"

julia> readdir(LOAD_PATH[end])
1-element Array{ByteString,1}:
 "MyModule.jl"

julia> using MyModule

julia> x
"Hi there"

MyModule.jl包含的位置:

module MyModule
  export x
  x = "Hi there"
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM