首页 > 解决方案 > Julia 添加包给出“包名无法解析”错误

问题描述

在 Julia 1.5.3 中,当我尝试使用此命令“] add MLPlots”添加 MLPlots 包时,出现以下错误:

ERROR: The following package names could not be resolved:
 * MLPlots (not found in project, manifest or registry)

标签: julia

解决方案


Fredrik 的评论真的应该是这里的答案,所以我会稍微扩展一下:

当你这样做时] add SomePackage,Julia 的包管理器将搜索General Registry以查找包,然后安装它。正如您在查看通用注册表中的M条目时将看到的那样,MLPlots未注册,因此您会看到“在...注册表中找不到”错误。

现在应该注意的是,软件包不必安装在通用注册表中即可安装 - 通用注册表只是默认注册表,并且在很大程度上是 Julia 生态系统中的便利工具,它提供了检查包的默认位置和对已注册的软件包强制执行某些标准,以确保事物之间可以很好地相互配合。话虽如此,没有什么能阻止你

  1. 添加不同的注册表:如Pkg.jl 文档介绍中所述,“它允许由不同方管理的多个注册表无缝交互。特别是,这包括可以存在于公司防火墙后面的私有注册表。其中一个例子是JuliaPro 注册表,它提供了常规注册表的精选子集;

  2. 只需添加一个未在任何地方注册的包,无论是从本地路径还是使用 GitHub(或等效服务,例如 GitLab)链接。

虽然在这种情况下,第二个原则上是一种选择,但此时 Fredrik 评论中提到的另一个问题变得相关:

(@v1.6) pkg> activate --temp
  Activating new environment at `/tmp/jl_pKGogE/Project.toml`

(jl_pKGogE) pkg> add https://github.com/JuliaML/MLPlots.jl
     Cloning git-repo `https://github.com/JuliaML/MLPlots.jl`
    Updating git-repo `https://github.com/JuliaML/MLPlots.jl`
ERROR: could not find project file in package at `https://github.com/JuliaML/MLPlots.jl` maybe `subdir` needs to be specified

从 v1.0 开始,Julia 要求包附带一个“项目”文件 ( Project.toml),该文件指定包依赖项,包括(至少作为最佳实践,对于通用注册表中的包)兼容性边界。由于您正在查看的包最后一次工作是在 5 年前,它不是 Julia 当前包管理器可以处理的格式。

看看包本身,我也会说这不一定是问题 - 不是想把在 Julia 绘图生态系统中做出杰出和开创性工作的 Tom 敲到这里,但这个特定的包似乎有点证明- 不提供大量功能的概念。也许如果您在Julia Discourse上发布一些更开放的请求,以寻求帮助解决您试图解决的任何问题,人们可以将您指向生态系统中当前最先进的软件包。

我将在这里补充一点,目前 Julia 中标准机器学习的中心包可能是MLJ.jl,其中包含一个roc_curve可以为您在自述文件ROCAnalysis中看到的绘图提供基础的函数。MLPlots


推荐阅读