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

如何使用R devtools添加本地包依赖及解决检查报错问题

解决R devtools添加本地包依赖及check识别问题

一、use_dev_package()的remote路径正确填写方式

  • 路径必须指向本地依赖包的根目录(即包含DESCRIPTION、R/、man/等核心文件夹的目录),不能是R子目录或tar.gz构建文件。
  • 支持两种路径形式:
    1. 绝对路径:直接填写完整路径,例如依赖包在/home/user/local-packages/foopack,执行命令:
      usethis::use_dev_package("foopack", type = "Imports", remote = "local::/home/user/local-packages/foopack")
      
    2. 相对路径:以主包项目根目录为基准,例如依赖包和主包同级(主包在my-main-pkg,依赖在foopack),执行命令:
      usethis::use_dev_package("foopack", type = "Imports", remote = "local::../foopack")
      
  • 执行后,主包的DESCRIPTION文件会自动添加两行配置:
    Imports: foopack
    Remotes: local::../foopack
    

二、让devtools::check()识别本地依赖(含vignette场景)

基础处理步骤

  1. 先确保本地依赖包可被R识别:
    • 在依赖包目录执行devtools::install()完成安装,或用devtools::load_all()加载开发版本到当前会话。
  2. 执行主包check时,添加cran = FALSE参数跳过CRAN严格检查规则:
    devtools::check(cran = FALSE)
    

带vignette的特殊处理

主包包含vignette时,编译过程会启动独立R会话,默认不会识别本地依赖,可按以下方式解决:

  1. 先在本地依赖包目录预编译vignette:
    devtools::build_vignettes()
    
  2. 临时将本地依赖包目录加入R的库路径后再执行check:
    withr::with_libpaths(c("../foopack", .libPaths()), {
      devtools::check(cran = FALSE, args = "--with-vignettes")
    })
    
  3. 若仍报“Package required but not available”,先手动安装本地依赖包,再执行主包check。

补充:use_dev_package()报错的解决逻辑

你提到的devtools::check()后报错消失,本质是check过程中会自动加载或安装依赖包,让R能识别到foopack。更稳妥的流程是先确保本地依赖包存在并可被R找到,再调用use_dev_package()添加依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 12:40:20