如何在JuliaBox笔记本中使用自己的模块?

时间:2018-04-03 08:53:40

标签: module julia ijulia-notebook

我最近开始在Julia中使用JuliaBox进行编程,我想使用我之前使用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笔记本电脑的在线版本的目的,这可能是为了方便随时随地访问。

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

2 个答案:

答案 0 :(得分:1)

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

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

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

该问题与JuliaBox或IJulia无关。这就是导入Module的方法。您可以将文件夹放在LOAD_PATHinclude包含模块的文件中。

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

我相信Github上的这个问题可以解决您遇到的问题:https://github.com/JuliaLang/julia/issues/4600

答案 1 :(得分: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所有文件,使用git remote add添加远程存储库(如GitHub或GitLab),以及git push您的本地存储库到新添加的远程存储库。您应该看到未注册的包选项正在按预期工作。

剩下的就是致电

julia> using MyModule

julia> myfunc(10)
20

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

相关问题