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

在shinyapps.io部署含Bitbucket仓库依赖的Shiny应用遇报错求助

Shiny应用部署到shinyapps.io时Bitbucket依赖包安装问题解决

问题场景

开发的Shiny应用依赖多个CRAN包,同时部分依赖包需从Bitbucket公开仓库安装,本地运行正常,但部署到shinyapps.io时触发以下错误:

Error: Unhandled Exception: child_task=1392178012 child_task_status=failed: Error parsing manifest: Unknown repository for package source: bitbucket
Execution halted

补充背景:应用核心依赖的rdrop2包已停止维护并从CRAN移除,需通过devtools::install_github("karthik/rdrop2")从GitHub安装,且该包依赖多个需手动安装的assertive系列Bitbucket包。

解决方案

shinyapps.io默认不直接识别Bitbucket源,可通过以下几种方式解决:

方法1:在DESCRIPTION文件中声明非CRAN依赖

shinyapps.io会读取项目DESCRIPTION文件的Remotes字段,自动从指定源安装依赖。在DESCRIPTION中添加以下内容:

Remotes:
  karthik/rdrop2,
  bitbucket::richierocks/assertive.properties,
  bitbucket::richierocks/assertive.types

添加完成后重新部署应用,平台会自动解析Remotes字段,从GitHub和Bitbucket拉取对应包。

方法2:在应用启动脚本中添加条件安装逻辑

在app.R或global.R的开头添加包检查与安装代码,确保部署环境中存在所需依赖:

# 安装Bitbucket依赖包
if (!requireNamespace("assertive.properties", quietly = TRUE)) {
  remotes::install_bitbucket("richierocks/assertive.properties")
}
if (!requireNamespace("assertive.types", quietly = TRUE)) {
  remotes::install_bitbucket("richierocks/assertive.types")
}

# 安装GitHub上的rdrop2
if (!requireNamespace("rdrop2", quietly = TRUE)) {
  remotes::install_github("karthik/rdrop2")
}

注意:部署前需确保项目中已包含remotes包的依赖声明(可本地安装remotes,或在DESCRIPTION的Imports字段添加remotes)。

方法3:使用renv锁定依赖版本

  1. 本地用renv初始化项目:
install.packages("renv")
renv::init()
  1. 安装所有依赖(包括Bitbucket和GitHub包),然后生成锁定文件:
renv::snapshot()
  1. 将生成的renv.lock文件和renv目录一同部署到shinyapps.io,平台会根据锁定文件中的源信息自动安装所有依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 11:04:51