我试图了解 Julia 项目何时需要 Manifest AND 项目文件与何时只需要项目文件。每种情况都有哪些不同的情况?我试图确保我自己的项目设置正确(它目前有两个文件)。
这Manifest.toml是 Julia 环境确切状态的快照。它用版本号指定了环境中安装的所有包——不仅仅是那些已经被] add编辑过的包,还有整个依赖关系图!
在Project.toml另一方面,仅列出直接的相关性,是已经包] add明确编,有可能在一个特定版本的边界[compat]部分。
通过检入这两个文件(特别是Manifest.toml),您可以使您的项目可重现。另一个用户只需要] instantiate并且将拥有与您在项目中工作时完全相同的环境。这对于可能由多个 Julia 脚本组成的应用程序项目非常有用,这些脚本不打算供其他 Julia 项目使用。
如果您只签入,Project.toml那么您将更松散地指定依赖项信息,并且将为 Julias 解析器留出空间来为所有依赖项找到合适的包版本。这是您在处理 Julia包时应该做的事情,因为人们可能希望将您的包安装在其他包旁边,并且过度限制依赖项的版本会使您的包不兼容。
因此,我总结如下:
应用程序/“项目” -> Project.toml + Manifest.toml
Julia 包-> 只有 Project.toml
有关应用程序和包的更多信息,请查看 Pkg.jl 文档的词汇表。
(并不是说存在特殊情况(例如未注册的依赖项),您可能需要Manifest.toml为 Julia 包签入。)