我最近开始在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笔记本电脑的在线版本的目的,这可能是为了方便随时随地访问。
无论如何,我已经没有想法了,所以如果有人能给我一个关于我哪里出错的线索,那将非常感激。
答案 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_PATH
或include
包含模块的文件中。
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 add
和git commit
所有文件,使用git remote add
添加远程存储库(如GitHub或GitLab),以及git push
您的本地存储库到新添加的远程存储库。您应该看到未注册的包选项正在按预期工作。
剩下的就是致电
julia> using MyModule
julia> myfunc(10)
20
编辑。您可以尝试将https://github.com/aytekinar/MyModule.jl作为未注册的包添加到您的JuliaBox。该存储库托管上述虚拟模块。