Import 在Julia 1.0中,从特定目录中的文件导入模块和函数

Import 在Julia 1.0中,从特定目录中的文件导入模块和函数,import,julia,using,Import,Julia,Using,假设我有一个文件file.jl,其中有一个模块MyModule,包含函数foo和bar。在与模块文件相同的目录中,我有一个脚本script.jl,我想在脚本中使用MyModule中的函数 如何执行此操作?您可以将该文件包含在模块定义中,并调用脚本文件中的函数: include(joinpath(@__DIR__,"File.jl")) MyModule.foo() MyModule.bar() # or just foor() and bar() if MyModule exports thos

假设我有一个文件
file.jl
,其中有一个模块
MyModule
,包含函数
foo
bar
。在与模块文件相同的目录中,我有一个脚本
script.jl
,我想在脚本中使用
MyModule
中的函数


如何执行此操作?

您可以将该文件包含在模块定义中,并调用脚本文件中的函数:

include(joinpath(@__DIR__,"File.jl"))
MyModule.foo()
MyModule.bar()
# or just foor() and bar() if MyModule exports those functions
@\uuuu DIR\uuuu
将扩展到脚本文件的目录,请参阅

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>.
帮助?>@\uu DIR__
@__目录->抽象字符串
展开到包含宏调用的文件目录的绝对路径的字符串。如果从REPL运行或由julia-e计算,则返回当前工作目录。

为了找到不在标准加载路径中的模块并能够导入它们,您需要显式更新当前文件夹的加载路径变量

push!( LOAD_PATH, "./" )
然后,您将能够适当地导入模块

请注意,如果文件名为
file.jl
并定义了模块
MyModule
,则应该导入的是
import MyModule
,而不是
import file
。在这种情况下,通常建议您使用与已定义模块相同的文件名,以避免混淆

另外请注意,正如上面提到的@crstnbr,您也可以通过简单地“包括”文件内容,将其“转储”到当前会话中;但是请注意,这只是在现场创建模块,因此任何预编译指令等都不会得到遵守


有些相关的问题/答案(免责声明:由我提供)您可能会发现有用的:


可以推一下-函数是否可以从脚本中运行,以使加载路径中的更改不会成为永久性的?无论如何,这似乎已经解决了导入问题,但现在我收到以下错误消息:
LoadError:importing MyModule to Main与现有标识符冲突
。这是由使用MyModule调用
导入模块的行引起的。您的模块似乎正在导出Main中已经存在的函数(可能是因为另一个包导出了相同的函数)@crstnrb这是使用
的问题吗?如果我的模块导出了任何东西,我应该使用
import
吗?@theodesa是的,只需使用import并使用由模块名称限定的导出函数。看看这个。