如何在Julia中使用未注册的软件包?

Dav*_*ela 5 package-managers julia

我想使用我在github上找到的软件包,但按名称添加它会给我以下错误:

(Example) pkg> add Unregistered
  Updating registry at `~/.julia/registries/General`
  Updating git-repo `https://github.com/JuliaRegistries/General.git`
ERROR: The following package names could not be resolved:
 * Unregistered (not found in project, manifest or registry)
Please specify by known `name=uuid`.
Run Code Online (Sandbox Code Playgroud)

我已经看到其他人使用该add命令,但是在这种情况下它似乎不起作用。

Dav*_*ela 5

该错误的原因是,如果它们是已注册的软件包,则通常只能按名称引用该软件包。

为了添加未注册的软件包,您可以通过URL引用它:

(Example) pkg> add https://github.com/00vareladavid/Unregistered.jl
  Updating git-repo `https://github.com/00vareladavid/Unregistered.jl`
  Updating git-repo `https://github.com/00vareladavid/Unregistered.jl`
 Resolving package versions...
  Updating `~/.julia/environments/Example/Project.toml`
  [dcb67f36] + Unregistered v0.2.0 #master (https://github.com/00vareladavid/Unregistered.jl)
  Updating `~/.julia/environments/Example/Manifest.toml`
  [7876af07] + Example v0.5.3
  [dcb67f36] + Unregistered v0.2.0 #master (https://github.com/00vareladavid/Unregistered.jl)
Run Code Online (Sandbox Code Playgroud)

您可以从add找到并安装了正确软件包的反馈中看到。它还为该软件包安装了递归依赖项。

重要的是要注意,存储库必须具有正确的目录结构。特别是,有效的Julia软件包具有一个Project.toml带有名称,UUID和版本字段的文件。

通过URL添加后,即可正常使用该软件包:

julia> import Unregistered
[ Info: Precompiling Unregistered [dcb67f36-efa0-11e8-0cef-2fc465ed98ae]
Run Code Online (Sandbox Code Playgroud)

您可以在Pkg手册中阅读有关使用未注册软件包的更多信息。

  • 同样值得一提的是,您可以`添加`本地路径,它不仅需要在线存储库(有关仍然需要有效的`Project.toml`的注意事项当然仍然适用)。 (2认同)