代码重用
在开发Julia程序时,经常需要在不同的项目中重用相同的代码。 在这种情况下,以模块或包的形式组织代码是很方便的。
*模块*是组织代码的一种更简单的方法。 它是一个包含函数、变量和其他元素组合到单个命名空间中的文件(有关详细信息,请参阅 Модули). 模块,方便本地开发和代码复用。
包是一种更复杂的结构,不仅包括代码,还包括元数据,如项目描述,依赖关系,版本等。 包由Julia自己通过Pkg包管理器维护,它允许您管理依赖项和版本。
与包不同,模块本身不支持通过Pkg自动依赖管理。 这可能会导致模块在未安装依赖项或与所需版本不匹配时无法正常工作的情况。 另一方面,包允许Julia自动监视和管理依赖关系,使它们更可靠,更易于重用和分发。
创建模块
如果目标是创建代码并在将来重用它,那么您可以将自己限制在自己的模块中。 要做到这一点,在文件浏览器 为未来模块创建一个具有所需名称和所需目录的文件,例如`my_module’文件。路径上的jl'/user/mymodule'。
使用’module’命令添加模块的内容,例如函数:
module my_module
function get_value(x)
return x
end
end
在Julia中,模块名称不必与文件名匹配,但是当使用`using`或`import’连接模块时,您需要使用模块内部指定的名称。 |
将模块路径添加到Julia路径 手动或使用命令:
engee.addpath("/user/mymodule")
使用’using’运算符加载模块。:
using my_module
加载模块后,您可以从中调用函数(或任何其他嵌入式代码:
my_module.get_value(7)
7
创建包
要创建自己的包,首先使用"生成"命令创建项目的基本结构。 为此,请将命令提示符切换到shell模式(键 ;)并转到要创建包的目录。 例如:
cd My_libs
# 结论
/user/My_libs
使用"生成"命令生成一个新项目(首先通过单击切换到包管理器"pkg>" ]在命令行上):
generate My_lib # 一个My_lib项目将与该项目一起创建。toml和src/My_lib。jl文件。
# 结论
Generating project Test_lib:
My_lib/Project.toml
My_lib/src/My_lib.jl
"生成"命令必须为每个新包执行一次。 此命令创建项目的初始结构,包括文件的项目。toml’和’src/包名。jl'。 生成后,您可以开发包,添加代码,配置依赖项等。
Julia项目是一种结构,它包括组织、依赖管理和版本控制所需的配置文件和目录。 一个包可以由一个或多个文件组成,可以上传到任何Julia项目。 |
软件包的源代码将放在`src’文件夹中。 默认情况下,创建的包文件将包含代码:
module My_lib
greet() = print("Hello World!")
end # module My_lib
使用不同的模块名称将文件的内容替换为以下代码:
module My_lib
function get_value(x)
return x
end
end
接下来,在Pkg模式下,使用’develop’命令将项目添加到当前会话。:
develop /user/My_libs/My_lib/
# 结论
Resolving package versions...
Updating `~/.project/Project.toml`
[487ef170] + My_lib v0.1.0 `~/My_libs/My_lib`
Updating `~/.project/Manifest.toml`
[487ef170] + My_lib v0.1.0 `~/My_libs/My_lib`
这里:
-
*Julia会话*是由包管理器(Pkg)管理的当前工作环境,它定义了用于代码执行的可用包和项目。 会话包括配置文件的项目。汤姆和清单。toml',它捕获有关包版本和依赖关系的信息,允许Julia管理项目及其依赖关系。
-
'项目。toml'-描述包的元数据,包括其名称、版本、作者和对其他包的依赖关系。 这是帮助Julia管理软件包及其版本的主要文件。 它是在使用"生成"命令时自动创建的。
-
"清单。toml'-捕获包的所有依赖项(包括其子依赖项)的确切版本。 它是在安装依赖项或通过Pkg添加包时自动创建的。 它是在使用’develop`命令连接到当前会话时自动创建的。
必须为当前环境中的每个包执行一次`develop’命令。 之后,包将被添加到环境中,您可以在代码中使用它。 如果将来对包进行了更改,则它们将自动可用,而无需再次运行"develop",因为此命令会在环境中创建指向包的符号链接。 |
要使用创建的包,请使用’import`或’using’运算符:
using My_lib
# 或者导入My_lib
使用"生成"创建包提供了一个便于依赖性和版本管理的结构。 它还使分发包变得更容易。
在开发模块和包时,可能需要重新启动内核,以便重新启动当前会话中的所有进程。 为此,请单击 反馈意见
|
要分发软件包,您需要将软件包文件上传到共享存储库,该存储库可供各种托管公司使用,例如 脧锚脧赂git.engee.com在我们的系列文章中,请阅读更多关于使用远程存储库和上传本地文件的信息 xref:getting-started-git/git-main.adoc[Git,*Engee*中使用的版本控制系统。 Julia包也可以在主Julia包注册表中注册,即通用注册表。 为此,请使用该工具 注册人。jl。 可以使用存储库URL安装包,例如GitHub:
如果软件包通过注册商成功注册。jl,它可以与标准命令安装:
|