导入模块并在julialang中使用

导入模块并在julialang中使用,julia,Julia,由于没有太多关于模块的信息,我想问以下问题 我想通过ijulia尝试两个模块。这两个模块都在我的工作目录中 name-of-files.jul。我将它们统称为模块1.jul和模块2.jul 模块1.jul使用模块2.jul,我用 using module_2 在ijulia会话中,如果我尝试 using module_1 给出了一个错误。我也试过了 include("module_1.jul") 最后一句执行时会出现错误,因为模块_1.jul无法找到 我知道的变量“x”包含在模块_1.ju

由于没有太多关于模块的信息,我想问以下问题

我想通过ijulia尝试两个模块。这两个模块都在我的工作目录中 name-of-files.jul。我将它们统称为模块1.jul和模块2.jul

模块1.jul使用模块2.jul,我用

using module_2
在ijulia会话中,如果我尝试

using module_1
给出了一个错误。我也试过了

include("module_1.jul")
最后一句执行时会出现错误,因为模块_1.jul无法找到 我知道的变量“x”包含在模块_1.jul中(在本例中,我“加载”了模块
在模块1.jul中使用include(“module2.jul”)时,Julias模块系统首先假定一些从文档中不一定显而易见的事情

  • Julia文件应以.jl扩展名结尾
  • Julia在LOAD_PATH变量中定义的目录中查找模块文件
  • Julia以ModuleName/src/file.jl的形式在这些目录中查找文件

  • 如果
    使用module_1
    失败,那么我猜这是因为它的源文件没有达到上述标准之一。

    这个问题已经过去了一段时间。最近,Noah_s在上一个答案的评论中写下了解决方案;这意味着对于开始学习该语言的人来说,这是一个反复出现的疑问。为了他们的缘故,我将我把诺亚的答案和我最新颖的解决方案重新写在这里

    我对
    julia
    版本以及哪些命令可以与特定的命令一起使用感到混乱,因此对于较旧的julia版本,我们必须查找
    \path
    ,然后将其包含在julia模块中

    push!(LOAD_PATH, "/path")
    
    在较新的版本中,这是可以改进的。忘记手动查看路径,只需执行以下操作

    path = readstring(`pwd`)
    push!(LOAD_PATH, chomp(path))
    

    我希望这对许多朱利安的新来者有用。

    但看看LOAD_PATH变量,我觉得这是一个缺点,不是吗?不知何故,我希望看到一个类似fortran甚至python代码的朱利安程序,在那里编译模块,然后执行主程序,但不添加其他程序中的模块(正如我所怀疑的,变量LOAD_PATH确实如此)。我想我不理解你的问题。LOAD_PATH只是一个告诉julia去哪里看的变量。在你键入import、include或using之前,不会加载任何内容。这就像你的terminals PATH变量。添加到它不会导致加载任何内容。但是假设我非常热情,并且在LOAD_PATH var上加载了一百万个模块可以,假设我也可以有相同名称、不同内容的模块,存储在不同的路径上。如果我假设从左到右搜索加载路径,如何正确链接我要使用的模块?此对话将很快变得无效。Julia以某种方式工作,如果你的热情不好对于julia的工作方式,julia会失败。但听起来你仍然不太明白。LOAD\u PATH只是一个字符串列表。它不会“加载”任何内容。它只是告诉julia当你要求它加载某个内容时应该在哪里查找。@user2820579,你会得到一个关于模组引用不明确的错误(你可以自己轻松测试它)在Julia 1.1.0中有更多的信息,我找不到readstring,但是pwd()是一个返回当前工作目录的函数。在最新版本中,它们使这变得更容易!