R 包版本依赖

R package versioned dependencies

我正在更新一个 R 包并且有两个特定的依赖项

httr (>= 0.6.1),
jsonlite (>= 0.9.14)

如果不满足这些条件,程序包将无法运行。我可以看到,如果我将它们都放在 Depends 中,这些版本限制将由 R 强制执行。如果我将它们放在 Imports 下,它们似乎不是。不需要将包放在 Depends 中,我不需要附加它们,我知道这样做是不好的做法。

难道 Imports 不强制执行版本限制吗?将包留在 Imports 中并让 .onLoad 函数检查过时的依赖项是否符合犹太洁食标准?

Writing R Extensions 第 1.1.3 节说

The ‘Imports’ field ... Version requirements can be specified and are checked when the namespace is loaded (since R >= 3.0.0).

所以听起来缺少版本检查是一个错误,应该报告给 R-devel mailing list or bug tracker

嗯,我认为在加载名称空间时会强制执行检查,例如,在 NAMESPACE 文件中 import(httr)。如果您的代码使用 httr::foo() 而没有显式地从 httr 导入,那么将不会进行检查,或者可能在 运行 时进行检查。因此,即使与文档一致 ('checked when the namespace is loaded')。

,它仍然看起来像是一个错误