如何确保Julia代码和相关依赖项的可重复性



假设我有一个项目,我正在执行分析(即不想开发可共享的包(,但我想确保其他人可以克隆存储库并实例化依赖项,并按照编写的方式运行代码。

到目前为止我采取的步骤:

  1. 在自己的文件夹中创建代码
  2. 使该文件夹成为Julia环境(通过REPL的包模式中的activate .(
  3. add修改了我正在使用的程序包

这会锁定依赖项的版本吗?还是需要手动将[compat]条目添加到Project.toml文件中?如果[compat]入口是必要的,有没有办法在add包装时自动包括该入口?

是否有一种全面的方法来确保可报告性?

这会锁定依赖关系的版本吗?

如果您提交了Project.tomlManifest.toml,则有人可以克隆repo、激活该项目并执行import Pkg; Pkg.instantiate()以下载清单中记录的完全相同的版本。

这会锁定依赖关系的版本吗?

是的,确切的版本记录在Manifest.toml文件中,只要该文件未被修改,它们就会被锁定。

或者我需要手动将[compat]条目添加到Project.toml文件中吗?

你不必这么做。只有当有人执行调用解析器的包操作时,这才重要,例如pkg> add ...pkg> up。如果您的代码依赖于某个特定版本的包,您可以随时将其添加到[compat]部分。例如,如果您依赖一个需要包X1.3.0版本的功能,则可以添加

[compat]
X = "1.3"

这将确保,即使有人调用包解析器,您也将至少获得包X的1.3版本。

最新更新