You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R包healthyverse检查报错:utils::packageVersion(x)找不到tidyAML

解决devtools::check时.onAttach中找不到tidyAML的问题

核心原因

devtools::check会在隔离测试环境中运行,和本地交互环境的依赖加载逻辑、顺序不同。即使本地能正常调用utils::packageVersion("tidyAML"),隔离环境可能因为依赖声明不完整、加载时机问题,导致.onAttach执行时tidyAML未被正确识别。

具体解决方案

1. 修正DESCRIPTION的依赖声明

确保tidyAML被正确添加到Imports字段(而非仅Suggests),因为你的包在.onAttach中直接调用了tidyAML相关逻辑:

Imports:
    tidyAML (>= 0.1.0),  # 替换为实际依赖的最低版本号
    utils

若之前放在Suggests,CRAN测试环境不会默认安装该包,自然会触发找不到的错误。

2. 调整.onAttach的容错逻辑

不要直接调用utils::packageVersion("tidyAML"),先通过requireNamespace验证包是否可访问:

.onAttach <- function(libname, pkgname) {
  if (requireNamespace("tidyAML", quietly = TRUE)) {
    tidy_version <- utils::packageVersion("tidyAML")
    # 你的原有逻辑,比如版本检查、欢迎信息等
  } else {
    warning("tidyAML包未安装,部分功能无法使用", call. = FALSE)
  }
}

3. 重置devtools测试环境

清理本地缓存并重新安装所有依赖后再测试:

devtools::clean_dll()
devtools::install_deps(dependencies = TRUE)
devtools::check()

4. 强制测试环境安装tidyAML

如果隔离环境仍未正确安装tidyAML,可手动指定在测试环境中安装:

withr::with_libpaths(new = tempdir(), {
  install.packages("tidyAML", repos = "https://cran.rstudio.com/")
  devtools::check()
})

内容的提问来源于stack exchange,提问作者MCP_infiltrator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 02:27:42