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')。
,它仍然看起来像是一个错误
我正在更新一个 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')。