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

问题描述

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

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

  1. 在自己的文件夹中创建代码
  2. 使该文件夹成为Julia环境(在REPL的打包模式下,由activate .组成)
  3. add编辑了我正在使用的程序包

此锁是否锁定依赖项的版本?还是我需要手动将[compat]项添加到Project.toml文件中?如果需要[compat] entreis,add打包时是否可以自动添加该条目?

是否有确保可重复生产性的整体方法?

解决方法

此锁是否锁定了依赖项的版本?

如果您提交Project.tomlManifest.toml,那么有人可以克隆该存储库,激活该项目,然后执行import Pkg; Pkg.instantiate()下载清单中记录的完全相同的版本。

,

此锁是否锁定了依赖项的版本?

是的,在某种意义上说,确切的版本记录在Manifest.toml文件中,只要该文件没有被修改,它们就被锁定。

还是我需要手动将[compat]项添加到Project.toml文件中?

您不必这样做。仅当某人执行调用解析程序的打包操作时,例如pkg> add ...pkg> up,这才有意义。如果您的代码依赖于某个特定版本的软件包,则可以始终将其添加到[compat]部分。例如,如果您依赖需要软件包X 1.3.0版的功能,则可以添加

[compat]
X = "1.3"

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...