Julia项目何时应该有清单和项目文件?

Julia项目何时应该有清单和项目文件?,julia,Julia,我试图理解Julia项目何时需要清单和项目文件,而何时只需要项目文件。每种情况下的不同情况是什么?我正在努力确保我自己的项目设置正确(它当前有两个文件)。清单。toml是环境确切状态的快照。它使用版本号指定环境中安装的所有软件包-不仅是那些已添加的软件包,还包括整个依赖关系图 另一方面,Project.toml只列出了直接依赖项,即已显式添加的包,可能在[compat]部分中指定了版本边界 通过签入这两个文件(特别是Manifest.toml),可以使项目具有可复制性。另一个用户只需]实例化,就

我试图理解Julia项目何时需要清单和项目文件,而何时只需要项目文件。每种情况下的不同情况是什么?我正在努力确保我自己的项目设置正确(它当前有两个文件)。
清单。toml
是环境确切状态的快照。它使用版本号指定环境中安装的所有软件包-不仅是那些已添加的软件包,还包括整个依赖关系图

另一方面,
Project.toml
只列出了直接依赖项,即已显式添加的包,可能在
[compat]
部分中指定了版本边界

通过签入这两个文件(特别是
Manifest.toml
),可以使项目具有可复制性。另一个用户只需
]实例化
,就可以拥有与您在项目中工作时完全相同的环境。这对于可能由多个Julia脚本组成的应用程序项目非常有用,这些脚本不打算由其他Julia项目使用

如果只签入
Project.toml
,则指定的依赖项信息将更加松散,这将为Julias resolver为所有依赖项找到合适的包版本留下空间。这是您在使用Julia软件包时应该做的,因为人们可能希望在其他软件包旁边安装您的软件包,并且过度限制依赖项的版本会使您的软件包不兼容

因此,我总结如下:

应用程序/“项目”->Project.toml+Manifest.toml

Julia软件包->仅限Project.toml

有关应用程序和软件包的更多信息,请查阅Pkg.jl文档


(并非存在例外情况(例如,未注册的依赖项),您可能需要签入
Manifest.toml
以获取Julia包。)

在Julia 1.2及更高版本中,您可以使用嵌套的
Project.toml
文件来表示。由于您的
test
文件夹中可能有一个
Project.toml
,您需要激活该文件夹,因此我还建议包括一个
Manifest.toml
,作为您确定知道包的测试通过的环境的记录

换句话说,我相信中提到的包/应用程序二分法,以及在应用程序中包含
Manifest.toml
的建议,我还要进一步说,包中的测试就像一个应用程序。包中可能包含的性能基准也是如此


我自己并没有实践过这一点,但让CI测试在
test/Manifest.toml的“冻结”版本和包管理器可以找到的每个包的最新版本下运行似乎是件好事。如果测试开始失败,那么就更容易区分破坏是否是由依赖项的更改引起的。

回答得好!我的团队正在技术上开发一个软件包,但更适合内部使用,所以我认为我们属于项目部分!我将把判断权留给你,但仅仅因为它只供内部使用,并不意味着它不再是一个软件包:)