如何在 JuliaBox 笔记本中使用我自己的模块?
How do I use my own modules in a JuliaBox notebook?
我最近开始使用 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 notebooks 的初衷,这大概是为了方便在任何地方访问。
无论如何,我 运行 没有想法,所以如果有人能告诉我我哪里出错了,我们将不胜感激。
如果您的模块文件在主文件夹中,请将其添加到 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
I did try installing the module as an unregistered package under Package Builder (I was getting desperate!), but that didn't work either.
我认为程序包生成器功能运行正常。只需尝试创建一个具有以下结构和内容的虚拟模块:
~/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
所有文件,添加一个远程存储库(如在GitHub或GitLab上)用git remote add
,并且 git push
你的本地存储库到新添加的远程存储库。您应该看到未注册的软件包选项按预期工作。
剩下的就是打电话
julia> using MyModule
julia> myfunc(10)
20
编辑。 您可以尝试将 https://github.com/aytekinar/MyModule.jl 作为未注册的包添加到您的 JuliaBox 中。该存储库托管 above-mentioned 虚拟模块。
我最近开始使用 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 notebooks 的初衷,这大概是为了方便在任何地方访问。
无论如何,我 运行 没有想法,所以如果有人能告诉我我哪里出错了,我们将不胜感激。
如果您的模块文件在主文件夹中,请将其添加到 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
I did try installing the module as an unregistered package under Package Builder (I was getting desperate!), but that didn't work either.
我认为程序包生成器功能运行正常。只需尝试创建一个具有以下结构和内容的虚拟模块:
~/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
所有文件,添加一个远程存储库(如在GitHub或GitLab上)用git remote add
,并且 git push
你的本地存储库到新添加的远程存储库。您应该看到未注册的软件包选项按预期工作。
剩下的就是打电话
julia> using MyModule
julia> myfunc(10)
20
编辑。 您可以尝试将 https://github.com/aytekinar/MyModule.jl 作为未注册的包添加到您的 JuliaBox 中。该存储库托管 above-mentioned 虚拟模块。