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

Dependencies 如何确保Julia代码和关联依赖项的可重复性?,dependencies,julia,reproducible-research,Dependencies,Julia,Reproducible Research,假设我有一个项目,我正在执行分析(即不打算开发一个可共享的包),但我希望确保其他人可以克隆存储库并实例化依赖项,并按照编写的方式运行代码 到目前为止,我采取了以下步骤: 在自己的文件夹中创建代码 使该文件夹成为Julia环境(通过REPL的打包模式下的激活。) 添加我正在使用的软件包 这会锁定依赖项的版本吗?或者我需要手动将[compat]条目添加到项目.toml文件中吗?如果需要输入[compat]条目,是否有方法在添加包时自动包含该条目 是否有确保可重复性的总体方法 这会锁定依赖项的版本吗

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

到目前为止,我采取了以下步骤:

  • 在自己的文件夹中创建代码
  • 使该文件夹成为Julia环境(通过REPL的打包模式下的
    激活。
  • 添加我正在使用的软件包
  • 这会锁定依赖项的版本吗?或者我需要手动将
    [compat]
    条目添加到
    项目.toml
    文件中吗?如果需要输入
    [compat]
    条目,是否有方法在添加包时自动包含该条目

    是否有确保可重复性的总体方法

    这会锁定依赖项的版本吗

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

    这会锁定依赖项的版本吗

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

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

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

    [compat]
    X = "1.3"
    
    这将确保,即使有人调用包解析程序,您也将至少获得包
    X
    的1.3版