如何在 Julia 中重新加载包?

How to reload a package in Julia?

我已经通过 Pkg 安装了 Metalhead.jl 包,我正在使用该安装进行开发。每次我在文件夹中进行更改时,我都会在 VS Code 上打开的 Jupyter Notebook 中测试包的行为。问题是,一旦我有 运行 以下行:

using Metalhead

重新运行它不会再次加载 Metalhead 包。我必须退出 Notebook,再次打开它并 运行 那一行以查看行为的变化。有没有办法在不退出笔记本的情况下重新加载包?

如果您在本地处理包,请确保在开发模式下通过 Pkg 克隆它:

develop --local Metalhead

这将在您当前的项目文件夹中创建一个新文件夹 dev/Metalhead。您需要使用 julia --project=. 启动 Julia,其中 . 指的是您的项目文件夹。

然后您可以更改您的包,而不是 using 使用 include 加载您的本地开发包:

include("dev/Metalhead/src/Metalhead.jl")

这会给你这样的警告:

WARNING: replacing module Metalhead.
Main.Metalhead

但之后您可以使用 Metalhead 中的所有功能,包括您的新功能,例如:

julia> Metalhead.AlexNet
Main.Metalhead.AlexNet

我通过向 Metalhead 添加一个虚拟函数来测试它,但可能有更优雅的解决方案。

This video about package development is old,但您仍然可以从 Chris 那里得到一些提示,所以我建议您检查一下。