与工程师合作
使用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。状况 显示已安装软件包和/或已下载模块的状态。 EngeePkg。状况,与此相反 Pkg。状况,可以提供有关加载模块的信息,区分系统和用户包,并确定哪些包含在系统映像中。
函数签名 EngeePkg。状况:
EngeePkg.status(modules::Union{String, UUID, Module, ModuleSelection};
mode::PackageMode, sort::PkgSortOrder, outdated::Bool, io::IO)
可选的第一个参数 模块 设置包/模块的选择。 这可以是一个特定包的名称或UUID,也可以是一个模块,也可以是一个指定许多包/模块的常量。:
-
USER_MODULES-从自定义软件包安装。 -
系统模型-从系统包安装。 -
已安装的_MODULES-安装在所有项目中(列出来自所有LOAD_PATH元素的软件包)。 -
LOADED_MODULES-加载到内存(包括未安装的)。 -
INIT_MODULES-从系统映像加载到内存中。 -
所有模型(默认情况下)-所有已安装和下载的软件包(列出来自所有LOAD_PATH元素的软件包)。
论点 伊俄 设置输出终端(默认情况下
标准输出).
论点 排序 设置枚举顺序:
-
PKGSORT_BY_NAME-按包名排序; -
PKGSORT_BY_SRCPATH-按已安装软件包的源文件的位置排序; -
PKGSORT_BY_UUID-按包uuid排序; -
PKGSORT_NONE(默认情况下)-没有排序。
论点 模式 设置选择已安装软件包的模式:
-
PKGMODE_项目-由项目文件(项目。toml); -
PKGMODE_管理-由清单文件(Manifest.toml)。
仅选择已安装的软件包时(USER_MODULES, 系统模型, 已安装的_MODULES)默认情况下,使用包含项目直接依赖关系数据的文件(项目。toml)。 当选择上传的文件(LOADED_MODULES, INIT_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。选择_包装. 如果 状况 以人类可读的形式打印信息,然后 选择_包装 返回与可以以编程方式处理的数据对象相同的信息。
函数签名 选择_包装:
EngeePkg.select_packages(modules::Union{String, UUID, Module, ModuleSelection},
mode::PackageMode)
功能 选择_包装 检索已安装的软件包和/或已下载的模块的选择作为软件包描述的数组。 争论 模块 和 模式 具有与in相同的含义 EngeePkg。状况.
EngeePkg。清除功能
功能 清除,清除 删除指定环境中安装的所有软件包(默认情况下,在用户的项目中):
EngeePkg.purge()
命令执行的输出
Updating `/user/.project/Project.toml` #удаление пакетов из Project.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` ##удаление пакетов из Manifest.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,其中只有所有包的显式枚举可用。