1

我最近开始使用 JuliaBox 在 Julia 中进行编程,并且我想使用我之前使用 Juno-Atom IDE 编写的自己的模块。我已将相关模块上传到 JuliaBox,但我无法从 JuliaBox 笔记本中调用它们。我得到的错误信息如下:

using MyModule

ArgumentError: Module MyModule not found in current path.
Run `Pkg.add("MyModule")` to install the MyModule package.

Stacktrace:
 [1] _require(::Symbol) at ./loading.jl:435
 [2] require(::Symbol) at ./loading.jl:405
 [3] include_string(::String, ::String) at ./loading.jl:522

我最初将该模块放在一个名为“modules”的单独文件夹中,但即使将其移动到主文件夹(与笔记本相同的位置),我仍然会收到相同的错误消息。

我已经确定了工作目录:

pwd()
"/mnt/juliabox"

..这似乎是我的模块当前存储的文件夹。至少,这是我尝试在 JuliaBox 主屏幕上移动模块文件时显示的目录。

我确实尝试在 Package Builder 下将模块安装为未注册的包(我快绝望了!),但这也不起作用。

所以我想知道是否需要在环境变量中的 JULIA_LOAD_PATH 中添加一些东西;然而,这似乎与使用在线版 Jupyter 笔记本的目的背道而驰,这可能是为了方便在任何地方访问。

无论如何,我的想法已经用完了,所以如果有人能给我一个关于我哪里出错的线索,我将不胜感激。

4

2 回答 2

2

如果您的模块文件在主文件夹中,请将其添加到 LOAD_PATH(默认情况下不添加)。如果您将文件放在其他位置,请自定义路径。

 @everywhere push!(LOAD_PATH, homedir())
 import MyModule

或者

include("MyModule.jl") # if it is already in pwd()
import MyModule

该问题与 JuliaBox 或 IJulia 无关。这就是您导入Module. 您要么放入文件夹,要么放入LOAD_PATH包含include模块的文件。

https://docs.julialang.org/en/stable/manual/modules/#Relative-and-absolute-module-paths-1

我相信 Github 上的这个问题解决了您面临的问题:https ://github.com/JuliaLang/julia/issues/4600

于 2018-04-03T15:13:16.573 回答
1

我确实尝试在 Package Builder 下将模块安装为未注册的包(我快绝望了!),但这也不起作用。

我认为包生成器功能工作正常。只需尝试创建一个具有以下结构和内容的虚拟模块:

~/MyModule.jl> tree 
.
├── REQUIRE
└── src
    ├── functions
    │   └── myfunc.jl
    └── MyModule.jl

2 directories, 3 files
~/MyModule.jl> cat REQUIRE 
julia 0.6
~/MyModule.jl> cat src/functions/myfunc.jl 
myfunc(x) = 2x
~/MyModule.jl> cat src/MyModule.jl 
module MyModule

export myfunc

include(joinpath("functions", "myfunc.jl"))

end

然后,git init目录中的存储库git addgit commit所有文件,添加一个远程存储库(如在 GitHub 或 GitLab 上)git remote add,并将git push您的本地存储库添加到新添加的远程存储库。您应该看到未注册的包选项按预期工作。

剩下的就是打电话

julia> using MyModule

julia> myfunc(10)
20

编辑。您可以尝试将https://github.com/aytekinar/MyModule.jl作为未注册的包添加到您的 JuliaBox。该存储库托管上述虚拟模块。

于 2018-04-03T15:44:47.393 回答