依赖包 "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' 软件包的所有依赖项。
尝试在 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' 软件包的所有依赖项。