依赖包 "package_name" 不可用

Dependency package "package_name" not available

尝试在 RStudio 中构建和重新加载时出现奇怪的错误。在我的描述文件中,我包含了一个我在我的组织内构建和维护的包。它不在 CRAN 上。本质上,当我更新 DESCRIPTION 文件时(取决于:...),我收到此错误:

==> devtools::document(roclets=c('rd', 'collate', 'namespace', 'vignette'))

Updating fczstudy documentation
Loading fczstudy
Error in (function (dep_name, dep_ver = NA, dep_compare = NA)  : 
  Dependency package surv3 not available.
Calls: suppressPackageStartupMessages ... <Anonymous> -> load_all -> load_depends -> mapply -> <Anonymous>
Execution halted

在这种情况下,surv3 是我在我的组织内维护的一个包 - 我可以确认它确实已安装,因为我正在使用它。

CRAN 的其他软件包似乎不会发生这种情况。几天前才开始。它不允许我导入我的包 (surv3)

我真的不知道如何调试它。

traceback() 在 ctrl+shift+B 后的控制台中 returns nothing

这是我的 sessionInfo():

R version 3.2.0 (2015-04-16)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 8 x64 (build 9200)

locale:
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods  
[7] base     

other attached packages:
[1] surv3_1.01     knitr_1.11     fczstudy_0.1.0 dplyr_0.4.3   
[5] ggplot2_1.0.1 

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.1      assertthat_0.1   digest_0.6.8    
 [4] MASS_7.3-40      R6_2.1.1         grid_3.2.0      
 [7] plyr_1.8.3       gtable_0.1.2     DBI_0.3.1       
[10] magrittr_1.5     scales_0.3.0     stringi_0.5-5   
[13] lazyeval_0.1.10  reshape2_1.4.1   rmarkdown_0.8.1 
[16] proto_0.3-10     tools_3.2.0      stringr_1.0.0   
[19] munsell_0.4.2    yaml_2.1.13      parallel_3.2.0  
[22] colorspace_1.2-6 htmltools_0.2.6 

在“项目选项”>“构建工具”对话框中取消选择带圆圈的选项可解决此问题,但我不太清楚原因:

当我遇到同样的问题时,它是由 DESCRIPTION 文件中的问题引起的。

Depends: 开头的行在错误的情况下列出了依赖包(例如 Ggplot2 而不是 ggplot2

我希望您不再需要此修复程序,但它可能对其他人有用。

Brandon 的解决方案对我不起作用。但是,我发现如果在加载包后运行 document,那么它不会抛出错误。此外,即使它抛出错误,它似乎仍在更新包。因此,可以通过 运行 另一顺序的代码来解决它。

我查看了 document 函数的源代码,并追踪到 requireNamespace 调用的错误消息。结果发现包根本就没有丢失,只是在.onLoad函数调用中出错了。这会导致 requireNamespace 到 return FALSE(无法加载包),就像未安装包一样。因此,真正的问题是来自 document 的错误消息在这种特殊情况下是不正确的。

示例错误:

Browse[2]> requireNamespace("thepackage")
Loading required namespace: thepackage
Failed with error:  ‘.onLoad failed in loadNamespace() for 'thepackage', details:
  call: some_function(., some_variable)
  error: could not find function "some_function"’

另一种可能的解决方案是检查软件包依赖项是否是最新的。我对 ggplot2 有同样的问题,当我尝试加载包时,由于依赖包 'scales' 是在具有不同内部结构的 R 版本中构建的,所以发生了错误。所以解决方案是重新安装包秤。

因此,您可以尝试重新安装 'ggplot2' 软件包的所有依赖项。