如何在julia中创建库?

如何在julia中创建库?,julia,Julia,我需要知道如何在Julia中创建一个库,以及我必须将它保存在哪里,以便以后调用它。我来自C和matlab,在Julia中似乎没有关于实际编程的文档。 谢谢如果你是Julia的新手,你会发现认识到Julia有两种机制来帮助你。说明您“需要知道如何在Julia中创建库”意味着您很可能想要创建一个Julia模块和一个包。但是下面列出的第一种方法也可能对您有用 在Julia中加载代码的两种方法是: 1。代码包含通过包含(“文件路径\u相对\u到\u调用\u或\u pwd.jl”) 表达式include(

我需要知道如何在Julia中创建一个库,以及我必须将它保存在哪里,以便以后调用它。我来自C和matlab,在Julia中似乎没有关于实际编程的文档。
谢谢

如果你是Julia的新手,你会发现认识到Julia有两种机制来帮助你。说明您“需要知道如何在Julia中创建库”意味着您很可能想要创建一个Julia
模块
和一个
。但是下面列出的第一种方法也可能对您有用

在Julia中加载代码的两种方法是:

1。代码包含通过包含(“文件路径\u相对\u到\u调用\u或\u pwd.jl”)

表达式include(“source.jl”)导致在发生include调用的模块的全局范围内计算source.jl文件的内容

关于,其中搜索“source.jl”文件:

包含的路径source.jl是相对于发生包含调用的文件进行解释的。这使得重新定位源文件的子树变得简单。在REPL中,包含的路径相对于当前工作目录pwd()进行解释

包含一个文件是将代码从一个文件拉入另一个文件的一种简单方法。但是,包含文件中定义的变量、函数等将成为当前命名空间的一部分。另一方面,模块提供自己独特的名称空间

2。通过
导入X
或使用X加载包裹

导入机制允许您加载一个包,即一个独立的、可重用的Julia代码集合,封装在一个模块中,并使结果模块在导入模块中以名称X可用

关于这两种代码加载方法之间的差异:

代码包含非常简单:它只是在调用方的上下文中解析和计算源文件。包加载是建立在代码包含之上的,并且相当复杂

关于Julia搜索模块文件的位置,请参见摘要:

全局变量
LOAD\u PATH
包含调用require时Julia搜索模块的目录。可以使用
push

将此语句放入文件~/.julia/config/startup.jl将在每次julia启动时扩展LOAD_路径。或者,可以通过定义环境变量JULIA_load_path来扩展模块加载路径

有关Julia模块的最简单示例之一,请参见

有关示例包,请参阅

旁注还有一个计划中的(未来的)库功能,类似于您在其他语言中使用的功能。见:

库(未来工作):一个编译的二进制依赖项(不是用Julia编写的),打包后供Julia项目使用。目前,这些库通常由项目源代码树中的deps/build.jl脚本就地构建,但将来我们计划让库成为由包管理器直接安装和升级的一流实体


您可以创建julia模块。只要将目录添加到
LOAD\u路径
,您就可以在任何地方保留模块。您可以使用一条语句轻松导入它们(
使用
导入
)。您还可以制作自己的软件包。请参阅文档:这很旧,但可能有帮助:
push!(LOAD_PATH, "/Path/To/My/Module/")
module Example
export hello, domath

hello(who::String) = "Hello, $who"
domath(x::Number) = x + 5

end