如何确保 Julia 代码和相关依赖项的可重复性?
How do I ensure repeatability of Julia code and assoicated dependencies?
假设我有一个正在执行分析的项目(即不打算开发可共享的包)但我想确保其他人可以克隆存储库并实例化依赖项和 运行 编写的代码.
到目前为止我已采取的步骤:
- 在自己的文件夹中创建代码
- 使该文件夹成为 Julia 环境(通过
activate .
在 REPL 的包模式中)
add
编辑了我正在使用的包
这会锁定依赖项的版本吗?或者我是否需要手动将 [compat]
条目添加到 Project.toml
文件?如果 [compat]
entreis 是必需的,有没有办法在 add
打包时自动包含该条目?
是否有确保可重复性的总体方法?
Does this lock in the versions of the dependencies?
如果您提交 Project.toml
和 Manifest.toml
,那么其他人就可以克隆该存储库,激活该项目并执行 import Pkg; Pkg.instantiate()
下载与清单中记录的完全相同的版本。
Does this lock in the versions of the dependencies?
是的,确切的版本记录在 Manifest.toml
文件中,因此只要该文件未被修改,它们就会被锁定。
Or do I need to manually add [compat]
entries to the Project.toml
file?
您不必这样做。这仅在有人执行调用解析器的包操作时才重要,例如 pkg> add ...
或 pkg> up
。如果您的代码依赖于某个特定版本的包,您可以随时将其添加到 [compat]
部分。例如,如果您依赖需要软件包 X
版本 1.3.0 的功能,您可以添加
[compat]
X = "1.3"
这将确保,即使有人调用包解析器,您也将至少获得包 X
.
的版本 1.3
假设我有一个正在执行分析的项目(即不打算开发可共享的包)但我想确保其他人可以克隆存储库并实例化依赖项和 运行 编写的代码.
到目前为止我已采取的步骤:
- 在自己的文件夹中创建代码
- 使该文件夹成为 Julia 环境(通过
activate .
在 REPL 的包模式中) add
编辑了我正在使用的包
这会锁定依赖项的版本吗?或者我是否需要手动将 [compat]
条目添加到 Project.toml
文件?如果 [compat]
entreis 是必需的,有没有办法在 add
打包时自动包含该条目?
是否有确保可重复性的总体方法?
Does this lock in the versions of the dependencies?
如果您提交 Project.toml
和 Manifest.toml
,那么其他人就可以克隆该存储库,激活该项目并执行 import Pkg; Pkg.instantiate()
下载与清单中记录的完全相同的版本。
Does this lock in the versions of the dependencies?
是的,确切的版本记录在 Manifest.toml
文件中,因此只要该文件未被修改,它们就会被锁定。
Or do I need to manually add
[compat]
entries to theProject.toml
file?
您不必这样做。这仅在有人执行调用解析器的包操作时才重要,例如 pkg> add ...
或 pkg> up
。如果您的代码依赖于某个特定版本的包,您可以随时将其添加到 [compat]
部分。例如,如果您依赖需要软件包 X
版本 1.3.0 的功能,您可以添加
[compat]
X = "1.3"
这将确保,即使有人调用包解析器,您也将至少获得包 X
.