2015-08-27 132 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