Engee 文档

使用 Julia 软件包

*Julia软件包*是一套有组织的现成函数、类和对象,可用于各种任务。Julia 包可以通过 Pkg 包管理器安装,并在项目中使用。如果你需要更明确地区分用户包和系统包,请使用EngeePkg

在*Engee*中,也可通过内置的Pkg软件包管理器使用两个工作区工具来处理Julia软件包—​命令行img 41 1 2脚本编辑器img41 1

在处理大量软件包时,使用脚本编辑器比较方便,因为调用 Pkg 后不需要重新初始化。如果您更习惯于在脚本编辑器界面之外处理代码,并处理少量软件包,则使用命令行更方便。

有关使用 Pkg 软件包管理器的详细说明,请访问Pkg

使用软件包的原则

  1. 查找您感兴趣的软件包的准确名称。Julia 生态系统中包含一万多个在通用注册表中注册的软件包,因此很难找到正确的软件包。为了优化搜索,我们建议您参考以下资料:

    • 编程 - Engee*部分包含俄语版Julia的完整文档。

    • JuliaHub - 用于搜索所有已注册的开源软件包文档的服务,可按标签和关键字排序。

    • Julia Packages - 用于搜索、探索和浏览 Julia 软件包的在线资源,可按类别、受欢迎程度和日期设置过滤器。

    • Julia.jl 是 Julia 编程语言的主要软件包资源库。该资源库托管在 GitHub 平台上,包含社区开发的许多有用的软件包和工具,可用于使用 Julia 语言。

  2. 请根据您的任务选择使用软件包的工具—​命令行或脚本编辑器。

  3. 通过添加 Pkg 软件包管理器来初始化 Julia 中的软件包处理。添加管理器的语法因所选工具而异。

  4. 使用 add 命令在环境中添加软件包,以便在项目中使用它们。添加软件包的语法因所选工具而异。

  5. 将软件包加载到命名空间,并使用 usingimport 操作符访问其特定元素。您也可以添加自己的软件包。

  6. 如有必要,可使用 status 查看软件包的状态,检查哪些软件包已载入 Engee RAM,并使用 removerm 删除不需要的软件包(语法取决于所选工具)。

有关软件包工作的详细信息如下。

命令行下的 Julia 软件包

要在 Engee 命令行上安装新软件包,请左键单击代码输入区,然后单击结尾方括号]。这将切换命令行,使其与软件包管理器协同工作。命令行将从 engee> 变为 pkg>

pkg>

在软件包管理器模式下,使用 add 命令添加软件包:

add Example

例如,你可以同时添加多个软件包,方法是列出用逗号分隔的软件包名称:

add Example, Plots, Pluto

删除 "命令或其缩写版本 "rm "用于删除软件包:

remove Pluto
软件包删除输出_
Updating `/user/.project/Project.toml`
  [c3e4b0f8] - Pluto v0.19.38
    Updating `/user/.project/Manifest.toml`
  [5218b696] - Configurations v0.17.6
  [e2d170a0] - DataValueInterfaces v1.0.0
  [21656369] - ExpressionExplorer v1.0.0
  [55351af7] - ExproniconLite v0.10.5
  [fb4132e2] - FuzzyCompletions v0.5.3
  [ac1192a8] - HypertextLiteral v0.9.5
  [82899510] - IteratorInterfaceExtensions v1.0.0
  [0e77f7df] - LazilyInitializedFields v1.2.2
  [6c6e2e6c] - MIMEs v0.1.4
  [36869731] - Malt v1.1.1
  [99f44e22] - MsgPack v1.2.0
  [c3e4b0f8] - Pluto v0.19.38
  [91cefc8d] - PrecompileSignatures v3.0.3
  [aea7be01] - PrecompileTools v1.2.0
  [2792f1a3] - RegistryInstances v0.1.0
  [3783bdb8] - TableTraits v1.0.1
  [bd369af6] - Tables v1.10.0
  [410a4b4d] - Tricks v0.1.6

如有必要,您可以一次删除多个软件包,方法是列出用逗号分隔的软件包名称:

remove Pluto, Plots, Example

试图删除不存在的软件包将导致错误:

错误输出_
 The following package names could not be resolved:
* Имя пакета (not found in project or manifest)
要退出 pkg> 软件包管理器模式,请左键单击代码输入区,然后单击Backspace 。这将返回 engee> 命令行的主视图。

脚本编辑器中的 Julia 软件包

要在 Engee 交互式脚本中安装新软件包,请在代码部分使用 import Pkg 命令导入 Pkg,然后运行 Pkg.add("软件包名称")。例如,添加 Example 软件包的代码部分如下所示:

import Pkg
Pkg.add("Example")

单击该部分的 Start 按钮img 1 1 2 后,将导入 Pkg 软件包管理器并安装 Example 软件包。软件包安装进度信息将自动显示:

Resolving package versions...
Installed Example ─ v0.5.3
Updating `/user/start/Project.toml`
[7876af07] + Example v0.5.3
Updating `/user/start/Manifest.toml`
[7876af07] + Example v0.5.3

与命令行一样,您可以同时添加多个软件包,例如用逗号列出它们的名称,并添加方括号创建字符串数组:

Pkg.add(["Example", "Plots"])

要删除软件包,请使用 rm 命令:

Pkg.rm("Example")

要同时删除多个软件包,可使用逗号和方括号枚举软件包名称:

Pkg.rm(["Example", "Plots"])

删除 "命令在脚本编辑器中没有定义,但在命令行中可以使用。试图在编辑器中调用该命令会产生错误:

`UndefVarError: `remove` not defined`
在脚本编辑器中,Pkg 软件包管理器名称和 Julia 软件包名称区分大小写,并且必须以大写字母开头,否则会出现错误信息。

软件包状态

要了解哪些软件包已安装并可以使用,请打开命令提示符并执行以下步骤:

  1. 通过] 登录 Pkg 软件包管理器。

  2. 键入命令 status

pkg> status

之后,你将看到已安装软件包及其版本的列表:

软件包状态显示
pkg> status
Status `/user/.project/Project.toml`
⌅ [c3fe647b] AbstractAlgebra v0.27.8
⌅ [7d9f7c33] Accessors v0.1.27
⌅ [79e6a3ab] Adapt v3.5.0
⌅ [91a5bcdd] Plots v1.36.1
⌃ [c3e4b0f8] Pluto v0.19.36

符号 表示软件包有了新版本:

  • - 有更新的版本。

  • - 有更新的版本,但与其他软件包有兼容性冲突。

您还可以通过脚本编辑器了解哪些软件包已安装并可以使用:

  1. 输入 import Pkg (如果之前没有输入过)。

  2. 输入 Pkg.status() 获取软件包的状态。

下载软件包

Julia 使用 importusing 操作符加载软件包,并提供对其特定元素(如函数、类型和变量)的访问:

  • using 用于加载模块的所有导出名称,并将它们绑定到当前名称空间。例如

    using Statistics
    
    x = mean([1, 2, 3, 4, 5])
  • import` - 用于有选择地从模块中导入某些函数或变量。要求在函数或变量名之前指定模块名。因此,未明确导入的函数或变量在当前环境中将不可用。

    例如

    import Statistics
    
    x = Statistics.mean([1, 2, 3, 4, 5])

考虑操作员的优势和局限性:

  • 使用 "的优点是方便。代码变得更宽松,模块中的所有函数和变量都可以在当前命名空间中使用。

  • 使用 "的缺点—​使用 "使用 "加载包含许多函数和变量的大型模块可能会影响性能和内存溢出。

  • using 的缺点是名称冲突。如果多个模块定义了同名的函数或变量,using 可能会导致名称冲突。

  • import`的优点是没有名称冲突。

  • 导入 "的优点是避免编译不必要的代码,从而减少编译时间。

  • 导入 "的缺点是代码复杂。

因此,"使用 "操作符更适合强调便捷性的小型项目。导入 "操作符更适用于注重选择性和内存使用控制的大型项目。