Engee 文档

与工程师合作

使用EngeePkg包可以清楚地分离用户包和系统包,并提供在项目中使用它们的高级功能。 *EngeePkg*是Pkg软件包管理器的附加组件,作为独立软件包实现,以便更好地控制下载的模块和软件包。

与Pkg相比,EngeePkg具有以下优势:

  • EngeePkg区分系统包和用户包,区分包含在系统映像中的系统包。 默认情况下,'EngeePkg。状态’功能从输出所有信息 LOAD_PATH。 经典Pkg与’Pkg。状态’功能它没有这样的功能,只提供来自一个项目的包的信息(默认情况下是活动的)。 而且,'EngeePkg。状态',不像’Pkg。状态',可以提供有关已加载模块的信息。

  • EngeePkg通过使用"EngeePkg"删除所有已安装的软件包来清理整个用户项目。没有明确列出的清除功能。 经典的Pkg清理项目与’Pkg。rm’函数,但需要显式枚举所有包。

要使用EngeePkg,请将其添加到当前环境(项目):

Pkg.add("EngeePkg")

将EngeePkg导入工作区(命令行或脚本编辑器):

using EngeePkg

请参阅命令行上的帮助(使用问号 ? 切换到"帮助"模式?`)输出可用的EngeePkg命令:

ALL_MODULES         CLI                 INIT_MODULES        INSTALLED_MODULES
LOADED_MODULES      PKGMODE_MANIFEST    PKGMODE_PROJECT     PKGSORT_BY_NAME
PKGSORT_BY_SRCPATH  PKGSORT_BY_UUID     PKGSORT_NONE        PkgUtils
SYSTEM_MODULES      Status              USER_MODULES        eval
include             purge               select_packages     status

接下来,让我们看看函数的EngeePkg。状态’和’EngeePkg.吹扫’使用具体的例子。

的’EngeePkg。状态’功能

的’EngeePkg。状态"功能显示已安装软件包和/或已下载模块的状态。 不像Pkg。状态,EngeePkg.状态可以提供有关已下载模块的信息,区分系统包和用户包,并确定哪些包包含在系统映像中。

'EngeePkg的签名。状态’功能:

EngeePkg.status(modules::Union{String, UUID, Module, ModuleSelection};
                  mode::PackageMode, sort::PkgSortOrder, outdated::Bool, io::IO)

可选的第一个参数"modules"指定包/模块的选择。 这可以是一个特定包的名称或UUID,也可以是一个模块,也可以是一个指定许多包/模块的常量。:

  • 'USER_MODULES'-从用户包安装。

  • 'SYSTEM_MODULES'-从系统包安装。

  • 'INSTALLED_MODULES—-安装在所有项目中(列出来自所有LOAD_PATH元素的包)。

  • 'LOADED_MODULES'—加载到内存中(包括未安装的)。

  • 'INIT_MODULES—-从系统映像加载到内存中。

  • 'ALL_MODULES'(默认情况下)-所有已安装和下载的软件包(列出来自所有LOAD_PATH元素的软件包)。

"Io"参数指定输出的终端(默认情况下) 'stdout`)。

'Sort’参数设置枚举顺序:

  • 'PKGSORT_BY_NAME—-按包名排序;

  • 'PKGSORT_BY_SRCPATH—-按已安装软件包的源文件位置排序;

  • 'PKGSORT_BY_UUID—-按包uuid排序;

  • 'PKGSORT_NONE'(默认情况下)-没有排序。

'Mode’参数设置已安装软件包的选择模式:

  • 'PKGMODE_PROJECT—-按项目文件(项目。toml);

  • 'PKGMODE_MANIFEST—-由清单文件(清单。toml)。

当仅选择已安装的软件包('USER_MODULES','SYSTEM_MODULES','INSTALLED_MODULES`)时,默认情况下使用包含项目直接依赖关系数据的文件(项目。toml)。 当选择上传的文件’LOADED_MODULES','INIT_MODULES','ALL_MODULES`)时,以及当选择按名称和UUID时,描述项目数据结构的文件(清单。toml)。

输出使用与’Pkg相同的格式。状态'。 从多个项目中选择包时,图标①、②等。 被用来区分它们。 ▣图标标记下载的软件包。 例如:

Status ① `/user/.project/Manifest.toml`
             ② `/usr/local/julia-1.9.3/environments/v1.9/Manifest.toml`
 ⌅ [39de3d68] AxisArrays v0.4.6 ② ▣
 ⌅ [98e50ef6] JuliaFormatter v1.0.20 ② ▣
   [2aef5ad7] QueryOperators v0.9.3 ②
 ⌅ [48965c70] MatrixPencils v1.7.5 ② ▣
 ⌃ [69666777] Arrow v2.4.3 ②
   [49dc2e85] Calculus v0.5.1 ② ▣
   [efcefdf7] PCRE2_jll v10.42.0+0 ② ▣
 ⌅ [d8a4904e] MutableArithmetics v1.1.0 ② ▣
 ⌅ [aacddb02] JpegTurbo_jll v2.1.91+0 ② ▣

的’Pkg。pkg包管理器的状态`功能可以提供有关仅来自一个项目的包的信息(默认情况下处于活动状态)。 例如:

Status `/user/.project/Project.toml`
  [e36ba207] EngeePkg v0.0.7
  [4d00f742] GeometryTypes v0.8.5
⌅ [23fbe1c1] Latexify v0.15.18

的’EngeePkg。状态’功能由`EngeePkg加入。select_packages'。 如果’status’以人类可读的形式打印信息,那么`select_packages’返回与可以以编程方式处理的数据对象相同的信息。

'Select_packages’函数的签名:

EngeePkg.select_packages(modules::Union{String, UUID, Module, ModuleSelection},
                           mode::PackageMode)

"Select_packages"函数接收已安装的软件包和/或下载的模块的选择,作为软件包描述的数组。 参数"modules"和"mode"与"EngeePkg"中的含义相同。状态'。

EngeePkg。清除功能

'Purge’函数删除指定环境中安装的所有软件包(默认情况下,在用户的项目中):

EngeePkg.purge()
命令执行的输出
Updating `/user/.project/Project.toml` # 从项目中删除包。toml(海关)
  [c3fe647b] - AbstractAlgebra v0.27.8
  [7d9f7c33] - Accessors v0.1.27
  [79e6a3ab] - Adapt v3.5.0
  [e36ba207] - EngeePkg v0.0.7
  [cd3eb016] - HTTP v1.5.4
  ...
  [91a5bcdd] - Plots v1.36.1
  [c3e4b0f8] - Pluto v0.19.40
  [438e738f] - PyCall v1.94.1
  [d330b81b] - PyPlot v2.11.2
  [3646fa90] - ScikitLearn v0.7.0
  [6a2ea274] - Torch v0.1.0
    Updating `/user/.project/Manifest.toml` # #从清单中删除包。toml(系统)
  [c3fe647b] - AbstractAlgebra v0.27.8
  [7d9f7c33] - Accessors v0.1.27
  [79e6a3ab] - Adapt v3.5.0
  [b99e7846] - BinaryProvider v0.5.10
  [d1d4a3ce] - BitFlags v0.1.7
  ...
  [d360d2e6] - ChainRulesCore v1.15.7
  [944b1d66] - CodecZlib v0.7.1
  [19ecbf4d] - Codecs v0.5.0
  [35d6a980] - ColorSchemes v3.20.0
  [3da002f7] - ColorTypes v0.11.4

该功能用于彻底清理用户的项目。 Pkg包管理器不支持此功能—`Pkg。rm`函数可用,对于该函数,只有所有包的显式枚举可用。