【问题标题】:Dependency package "package_name" not available依赖包“package_name”不可用
【发布时间】:2016-01-30 09:51:28
【问题描述】:

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

==> 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 后控制台中没有返回任何内容

这是我的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 

【问题讨论】:

  • 如果您添加来自traceback() 的输出(在错误之后)和来自sessionInfo() 的输出,将会有所帮助。
  • 我以前试过这个。 No traceabck available。我将使用sessionInfo() 更新问题

标签: r devtools


【解决方案1】:

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

我查看了document 函数的源代码,并将错误消息追踪到requireNamespace 调用。结果发现包根本没有丢失,但在.onLoad 函数调用中出现错误。这会导致requireNamespace 返回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"’

【讨论】:

    【解决方案2】:

    取消选择 Project Options > Build Tools 对话框中的圆圈选项解决了这个问题,虽然我不太清楚为什么:

    【讨论】:

    • 不幸的是,这对我不起作用。您是否在项目中使用 Packrat?
    • @Elise 我在使用 Packrat 时遇到了同样的问题,我关闭了 Packrat,问题得到了解决……但我无法始终如一地复制它
    • 可以确认,对我也有效,但错误消息完全相同,只是在运行测试时...
    【解决方案3】:

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

    Depends: 开头的行的依赖包以错误的大小写列出(例如Ggplot2 而不是ggplot2

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-30
        • 2014-11-28
        • 2019-05-08
        • 1970-01-01
        • 2014-08-20
        • 2017-02-14
        相关资源
        最近更新 更多