【发布时间】:2021-01-24 22:38:39
【问题描述】:
帮助,我被 R 折磨着。当我尝试加载一个名为 RedTor 的自定义包时。它生成
错误:loadNamespace(i, c(lib.loc, .libPaths()) 中“RedTor”的包或命名空间加载失败, 版本检查 = vI[[i]]): namespace ‘rlang’ 0.4.7 已经加载,但 >= 0.4.9 是必需的
我检查了显而易见的。我安装了 0.4.10 版的 rlang。这不仅仅与 RedTor 有关。 library(dplyr) 生成相同的错误。它更加普遍,似乎是一个命名空间问题。如果我使用 unloadNamespace() 函数
unloadNamespace("rlang")
我明白了
unloadNamespace("rlang") 中的错误: 命名空间‘rlang’由‘ellipsis’、‘testthat’、‘pkgload’、‘pillar’、‘lifecycle’、‘htmltools’、>‘usethis’导入,所以无法卸载
所以我需要卸载那些,但这些可能会反过来生成其他消息。
这似乎与在 R 中加载的内容有关。我运行 sessionInfo() 并注意通过命名空间(而不是附加)加载的内容 - 大约 30-41 个包。希望我知道如何防止这些加载。任何帮助表示赞赏。据我所知,我没有加载 .rdata,也没有加载 .renviron 中的包。
下面是我启动 R 时 sessionInfo() 的结果。它显示 rlang 的 0.4.7 版本正在加载,即使我安装了 0.4.10。我很确定这不仅仅是 rlang,而且 rlang 只是第一个抛出错误的人。这是因为正在通过“过时”的命名空间加载其他包。
R 版本 3.6.3 (2020-02-29) 平台:x86_64-w64-mingw32/x64(64位) 运行于:Windows 10 x64(内部版本 18363)
矩阵产品:默认
语言环境: [1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252
LC_MONETARY=English_United States.1252 [4] LC_NUMERIC=C LC_TIME=English_United States.1252附加的基础包: [1] stats graphics grDevices utils datasets methods base
其他附加包: [1] devtools_2.2.1 使用this_1.6.1
通过命名空间加载(未附加): [1] prettyunits_1.1.1 ps_1.3.0 fansi_0.4.0 rprojroot_1.3-2 withr_2.2.0
摘要_0.6.23蜡笔_1.3.4
[8] assertthat_0.2.1 R6_2.4.1 backports_1.1.5 magrittr_1.5 rlang_0.4.7
cli_2.0.2 遥控器_2.1.1
[15] rstudioapi_0.11 fs_1.4.1 testthat_2.3.2 callr_3.4.3 ellipsis_0.3.0
desc_1.2.0 工具_3.6.3
[22] 胶水_1.4.2 编译器_3.6.3 pkgload_1.0.2 进程x_3.4.1 pkgbuild_1.0.8
sessioninfo_1.1.1 memoise_1.1.0
最后,我什至尝试运行一个脚本来卸载所有命名空间
si <- sessionInfo()
loadednames <- names(si$loadedOnly)
ctr <- 1
n <- length(loadednames)
nold <- n + 1
while (n > 0 & n < nold) {
cat(n, " ")
for (i in n:1) {
try(unloadNamespace(loadednames[i]), silent = TRUE)
}
si <- sessionInfo()
loadednames <- names(si$loadedOnly)
n <- length(loadednames)
ctr <- ctr + 1
if ( ctr > 100) break
}
这不会卸载所有命名空间。但它让我降到了大约 20。这是运行上述内容后 sessionInfo() 的部分输出。 rlang 仍在列表中:
通过命名空间加载(未附加):
[1] pkgload_1.0.2 R6_2.4.1 rlang_0.4.7 fansi_0.4.0 tools_3.6.3
pkgbuild_1.0.8 sessioninfo_1.1.1 [8] cli_2.0.2 with r_2.2.0 ellipsis_0.3.0 remotes_2.1.1 assertthat_0.2.1
摘要_0.6.23蜡笔_1.3.4
[15] processx_3.4.1 callr_3.4.3 fs_1.4.1 memoise_1.1.0 glue_1.4.2
compiler_3.6.3 prettyunits_1.1.1
所以现在我只是尝试卸载剩余的命名空间,直到我最终可以加载我的 RedTor 包。这是一个曲折的过程,我们将不胜感激。
【问题讨论】:
-
你有一个 .Rprofile 文件在启动时运行任何代码来加载包吗?您使用的是基本 R GUI 还是使用 RStudio?如果不是正在加载的 rlang 版本,您怎么知道您安装了哪个版本?您是否设置了多个库路径?如果你运行
install.packages("rlang")会发生什么? -
通常
update.packages()可以,最好与最新的 R 版本结合使用。并且:您尝试的包裹来自哪里? -
您能否将您的问题标题更改为更清晰、更具体/信息丰富的内容?
-
MrFlick - 我确实有一个加载开发工具的 .rprofile。删除它清除了问题。 install.packages("rlang") 没有帮助,因为我有最新版本。我在 .libPaths 中有 2 个条目,一个指向 Google 驱动器,其想法是我和同事可以使用相同版本的软件包,另一个指向 /Program Files/R/R-3.6.3/图书馆的帽子船长 - 很高兴改变标题。我非常理解更好的标题可以帮助其他人在遇到类似问题时寻求帮助。我还没有 - 命名空间循环引用有效吗?
标签: r namespaces