旧版R包plotly为何要求依赖新版purrr?
Plotly/Highcharter与旧版purrr的版本冲突问题分析
核心问题原因拆解
旧版包的依赖声明被后续更新覆盖:你安装的2019年版plotly 4.9.1,其原始发布时的依赖要求可能并不包含purrr 1.0.1,但CRAN的包索引或维护过程中,该包的依赖信息被后续修改(比如作者补加了更高版本的依赖,或是CRAN的校验规则调整),导致安装时仍会调用最新的依赖校验逻辑,强制要求purrr >=1.0.1。
R命名空间的加载机制限制:当你先安装适配purrr 1.0.1的plotly再降级purrr时,R的命名空间一旦加载了某个版本的包,就无法在当前会话中替换为旧版本。即使你重新安装了purrr 0.3.3-0.3.5,内存中已加载的purrr 1.0.1命名空间依然存在,plotly加载时会优先检查已加载的版本,触发版本不匹配报错。
间接依赖的连锁强制:plotly或highcharter的其他依赖包(如dplyr、tidyr等)可能已经依赖高版本purrr,这些包在安装或加载时会自动升级purrr,或是强制要求高版本,导致你手动降级purrr后,这些依赖包也会触发版本检查错误,最终还是会回到purrr版本不兼容的问题。
报错信息
Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]) : namespace 'purrr' 0.3.3 is already loaded, but >= 1.0.1 is required Calls: <Anonymous> ... namespaceImportFrom -> asNamespace -> loadNamespace Execution halted ERROR: lazy loading failed for package 'plotly'
内容的提问来源于stack exchange,提问作者Mattis01
相关产品推荐
相关产品推荐

