survminer包加载失败:cli版本冲突与R包重置/加载顺序问询
问题描述
执行以下命令安装并加载survminer包:
install.packages('survminer') library(survminer)
出现报错:
Loading required package: ggpubr Error: package or namespace load failed for ‘ggpubr’ in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]): namespace ‘cli’ 3.2.0 is already loaded, but >= 3.4.0 is required Error: package ‘ggpubr’ could not be loaded
安装survminer时已自动安装cli 3.6.1,但加载新版本cli时,旧版cli 3.2.0因被pillar依赖无法卸载;pillar又被tibble、dplyr依赖,tibble则依赖于dplyr、ggplot2。尝试卸载dplyr、ggplot2、tibble后仍无法卸载pillar,多次重启R也无效。
会话信息:
R version 4.1.1 (2021-08-10) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Ubuntu 20.04.3 LTS attached base packages: [1] stats graphics grDevices utils datasets methods base loaded via a namespace (and not attached): [1] rstudioapi_0.13 magrittr_2.0.2 tidyselect_1.2.0 munsell_0.5.0 colorspace_2.0-2 [6] R6_2.5.1 rlang_1.1.1 fansi_1.0.2 dplyr_1.1.2 tools_4.1.1 [11] grid_4.1.1 gtable_0.3.0 utf8_1.2.2 cli_3.2.0 withr_2.5.0 [16] tibble_3.2.1 lifecycle_1.0.3 ggsignif_0.6.4 vctrs_0.6.2 glue_1.6.1 [21] compiler_4.1.1 pillar_1.9.0 generics_0.1.2 scales_1.2.1 lubridate_1.8.0 [26] pkgconfig_2.0.3
注:无法更新R版本,也无法卸载预安装的pillar包(执行remove.packages提示无该包)。
解决方案
方法1:使用自定义库路径隔离依赖
通过创建独立的包目录,优先使用该目录下的新版本包,避免与系统预安装包冲突:
- 完全关闭R,重新启动一个未加载任何包的干净会话(可通过终端运行
R --vanilla跳过自定义配置) - 创建自定义库目录:
dir.create("~/R_custom_lib", recursive = TRUE) - 将自定义目录设为优先加载路径:
.libPaths(c("~/R_custom_lib", .libPaths())) - 安装最新版
cli到自定义目录:install.packages("cli", lib = "~/R_custom_lib") - 安装
ggpubr和survminer:install.packages(c("ggpubr", "survminer"), lib = "~/R_custom_lib") - 加载包时指定自定义库路径:
library(cli, lib.loc = "~/R_custom_lib") library(survminer, lib.loc = "~/R_custom_lib")
方法2:强制加载新版本cli
在干净会话中直接定位并加载新版本cli,再加载survminer:
- 重启R,用
sessionInfo()确认cli未被加载 - 定位并加载最新版
cli:library(cli, lib.loc = find.package("cli", quiet = FALSE)[which.max(packageVersion("cli"))]) - 加载
survminer:library(survminer)
方法3:强制卸载旧版cli命名空间(风险较高)
若上述方法无效,可尝试强制卸载已加载的旧版cli命名空间(可能导致其他依赖包临时报错,需谨慎):
- 卸载旧版
cli命名空间:unloadNamespace("cli") - 重新加载新版本
cli:library(cli) - 加载
survminer:library(survminer)
内容的提问来源于stack exchange,提问作者Bethan R
相关产品推荐
相关产品推荐

