julia:在没有 Internet 的情况下创建和使用本地包

julia: create and use a local package without Internet

我正在尝试创建一个 julia 语言包并在项目中使用它。
现在我只有一个jl文件,我不知道如何用它创建一个包。

我已经阅读了这篇文章link,但我仍然不知道该怎么做。我想创建一个带有 jl 文件的本地包,并使用以下代码在我自己的本地项目中使用它:using MyPackage.

有人可以帮我吗?

你应该把文件放在

~/.julia/v0.X/MyPackage/src/MyPackage.jl

其中 ~ 是您的主目录,X 是您使用的 Julia 的版本号。 X 将为 3,除非您使用的是 Julia 的开发版或夜间版,在这种情况下它将为 4。

另请注意,要使其正常工作,文件 MyPackage.jl 应定义模块 MyPackage 并导出您希望在使用 MyPackage 调用后可用的定义。

要自动创建此结构,您可以调用 Pkg.generate("MyPackage", "MIT"),其中 MIT 可以替换为另一个受支持的默认许可证。这将在正确的位置创建文件夹并为您设置模块结构。然后你只需要将你的代码合并到那个结构中。


编辑

这里是文件 ~/.julia/v0.3/MyPackage/src/MyPackage.jl 的两个可能内容的示例:

module MyPackage

function test()
    1
end

end  # module

module MyPackage

export test

function test()
    1
end

end  # module

在第一种情况下,我没有export编辑任何东西。因此,当调用 using MyPackage 时,只有模块 MyPackage 本身可供用户使用。如果我想使用 test 函数,我将不得不使用完全限定名称:MyPackage.test().

第二种情况我选择导出函数test。这发生在 export test 行。现在,当我调用 using MyPackage 时,模块 MyPackage 和函数 test 都可供用户使用。我不再需要使用完全限定的名称来访问 testtest() 会起作用。