Pkg

Pkg 是 Julia 内置的包管理器,它处理安装、更新和删除包等操作。

注意

以下是对 Pkg 的一个非常简短的介绍。有关 Project.toml 文件、Manifest.toml 文件、包版本兼容性([compat])、环境、注册表等的更多信息,强烈建议阅读完整的手册,该手册可在以下位置获得:https://pkgdocs.julialang.org

以下是 Pkg 基本功能的快速概述。它应该帮助新用户熟悉 Pkg 的基本功能,例如添加和删除包以及使用环境。

注意

为了使本基本指南保持重点,本节省略了一些 Pkg 输出。这将有助于保持良好的节奏,而不是陷入细节。如果您需要更多详细信息,请参阅 Pkg 手册的后续部分。

注意

本指南使用 Pkg REPL 执行 Pkg 命令。对于非交互式使用,我们建议使用 Pkg API。Pkg API 在 Pkg 文档的API 参考部分中有完整文档。

Pkg 带有一个 REPL。从 Julia REPL 中按下 ] 即可进入 Pkg REPL。要返回到 Julia REPL,请按 Ctrl+C 或退格键(当 REPL 光标位于输入的开头时)。

进入 Pkg REPL 后,您应该会看到以下提示

(@v1.8) pkg>

要添加包,请使用 add

(@v1.8) pkg> add Example
   Resolving package versions...
   Installed Example ─ v0.5.3
    Updating `~/.julia/environments/v1.8/Project.toml`
  [7876af07] + Example v0.5.3
    Updating `~/.julia/environments/v1.8/Manifest.toml`
  [7876af07] + Example v0.5.3

安装包后,可以将其加载到 Julia 会话中

julia> import Example

julia> Example.hello("friend")
"Hello, friend"

我们还可以一次指定多个包来安装

(@v1.8) pkg> add JSON StaticArrays

status 命令(或较短的 st 命令)可用于查看已安装的包。

(@v1.8) pkg> st
Status `~/.julia/environments/v1.6/Project.toml`
  [7876af07] Example v0.5.3
  [682c06a0] JSON v0.21.3
  [90137ffa] StaticArrays v1.5.9
注意

一些 Pkg REPL 命令有短命令和长命令两种版本,例如 statusst

要删除包,请使用 rm(或 remove

(@v1.8) pkg> rm JSON StaticArrays

使用 up(或 update)更新已安装的包

(@v1.8) pkg> up

如果您一直在遵循本指南,则可能已安装的包处于最新版本,因此 up 不会执行任何操作。下面我们展示了在故意安装旧版本 Example 包并对其进行升级的情况下,状态输出的情况

(@v1.8) pkg> st
Status `~/.julia/environments/v1.8/Project.toml`
⌃ [7876af07] Example v0.5.1
Info Packages marked with ⌃ have new versions available and may be upgradable.

(@v1.8) pkg> up
    Updating `~/.julia/environments/v1.8/Project.toml`
  [7876af07] ↑ Example v0.5.1 ⇒ v0.5.3

我们可以看到,状态输出告诉我们有更新的版本可用,并且 up 升级了包。

有关管理包的更多信息,请参阅文档的管理包部分。

到目前为止,我们已经介绍了基本的包管理:添加、更新和删除包。

您可能已经注意到 REPL 提示符中的 (@v1.8)。这让我们知道 v1.8 是**活动环境**。不同的环境可以拥有完全不同的包和版本,这些包和版本是从另一个环境中安装的。活动环境是 Pkg 命令(如 addrmupdate)将修改的环境。

让我们设置一个新的环境以便我们进行实验。要设置活动环境,请使用 activate

(@v1.8) pkg> activate tutorial
[ Info: activating new environment at `~/tutorial/Project.toml`.

Pkg 让我们知道我们正在创建一个新环境,并且此环境将存储在 ~/tutorial 目录中。环境的路径是相对于 REPL 的当前工作目录创建的。

Pkg 还更新了 REPL 提示符以反映新的活动环境

(tutorial) pkg>

我们可以使用 status 请求有关活动环境的信息

(tutorial) pkg> status
    Status `~/tutorial/Project.toml`
   (empty environment)

~/tutorial/Project.toml 是活动环境的**项目文件**的位置。项目文件是一个TOML文件,Pkg 在其中存储已明确安装的包。请注意,此新环境为空。让我们添加一些包并观察

(tutorial) pkg> add Example JSON
...

(tutorial) pkg> status
    Status `~/tutorial/Project.toml`
  [7876af07] Example v0.5.3
  [682c06a0] JSON v0.21.3

我们可以看到 tutorial 环境现在包含 ExampleJSON

注意

如果您在多个环境中安装了相同的包(在相同的版本中),则该包只会下载并存储在硬盘上一次。这使得环境非常轻量级,并且创建起来实际上是免费的。只使用包含大量包的默认环境是 Julia 中常见的初学者错误。学习如何有效地使用环境将改善您使用 Julia 包的体验。

有关环境的更多信息,请参阅文档的使用环境部分。

如果您遇到任何问题,可以向 Pkg 请求帮助

(@v1.8) pkg> ?

您应该会看到可用命令的列表以及简短的描述。您可以通过指定命令来请求更详细的帮助

(@v1.8) pkg> ?develop

本指南应该可以帮助您开始使用 PkgPkg 在强大的包管理方面还有更多功能,阅读完整的手册以了解更多信息!