比方说,我有一个文件File.jl
,其中有一个模块MyModule
,其中包含函数foo
和bar
。在与模块文件相同的目录中,我有一个脚本Script.jl
,我想在脚本中使用MyModule
中的功能。
人们将如何做呢?
答案 0 :(得分:3)
为了找到不在标准LOAD_PATH中的模块并能够导入它们,您需要显式更新当前文件夹的LOAD_PATH变量
push!( LOAD_PATH, "./" )
然后您将能够适当地导入模块。
请注意,如果文件名为File.jl
并定义了模块MyModule
,则应导入的是import MyModule
,而不是import File
。在这种情况下,通常建议您为文件使用与定义的模块相同的名称,以避免混淆。
还请注意,如上文@crstnbr所述,您还可以通过简单地“包括”它来简单地将文件内容“转储”到当前会话中;但是请注意,这只是在现场创建模块,因此不会遵循任何预编译指令等。
一些与您相关的问题/答案(免责声明:由我负责),您可能会发现有帮助:
答案 1 :(得分:2)
您将文件包含在模块定义中,并在脚本文件中调用函数:
include(joinpath(@__DIR__,"File.jl"))
MyModule.foo()
MyModule.bar()
# or just foor() and bar() if MyModule exports those functions
@__DIR__
扩展到脚本文件的目录,请参见
help?> @__DIR__
@__DIR__ -> AbstractString
Expand to a string with the absolute path to the directory of the file containing the macrocall. Return the current working directory if run from a REPL or if evaluated by julia -e <expr>.