2015-08-27 134 views
2

我更新的R包,有两个特定的相关[R包版本的依赖

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

如果这些得不到满足的包将不会动作。我可以看到,如果我把它们都放在Depends中,这些版本限制将由R执行。如果我把它们放在Imports下面,它们看起来不是。没有必要将这些软件包放入Depends中,我不需要它们,我知道这样做是不好的做法。

是它预计进口不强制版本限制?在Imports中保留包并且使用.onLoad函数检查过期依赖关系是否值得犹豫?

回答

1

Writing R Extensions部1.1.3说

在“进口”字段...版要求 可以指定和被加载的命名空间时被检查(由于R> = 3.0.0)。

所以,它听起来就像缺少版本检查的是一个错误,应该报告给R-devel的mailing listbug tracker

嗯,我想加载的命名空间时,检查执行,例如,在空间文件import(httr)。如果你的代码使用httr::foo()而没有从httr明确导入,那么就不会有检查,或者在运行时检查。所以,再一次它似乎是一个错误,即使与文档保持一致(“选中时的命名空间是加载”)。

+0

这似乎正是如此。我在整个使用httr ::和jsonlite ::所以命名空间从未加载。将import或importFrom添加到NAMESPACE文件会导致检查发生。谢谢! – Ray