如何将私有GitHub本地包部署至shinyapps.io?
部署Shiny应用至shinyapps.io:私有GitHub包依赖解决方案
问题根源
报错显示shinyapps.io默认从CRAN查找Mycpp包,但该包实际存储在私有GitHub仓库,系统无法识别其正确来源,导致部署失败。
解决步骤
在应用代码中指定包来源:在
app.R或server.R开头加入以下代码,强制从私有GitHub仓库安装包:if (!requireNamespace("Mycpp", quietly = TRUE)) { devtools::install_github("你的GitHub用户名/Mycpp", auth_token = Sys.getenv("GITHUB_PAT")) }随后在shinyapps.io的应用「设置」→「环境变量」中添加
GITHUB_PAT,值为拥有私有仓库访问权限的GitHub个人访问令牌(需勾选repo权限)。修正部署清单的包来源信息:
- 本地项目中执行
packrat::init()初始化依赖管理 - 打开
packrat/packrat.lock文件,找到Mycpp相关条目,将Source字段改为GitHub,新增Repository字段填写私有仓库的完整URL(如https://github.com/你的用户名/Mycpp.git) - 执行
rsconnect::writeManifest()生成正确的部署清单,再重新部署
- 本地项目中执行
验证本地依赖完整性:
本地先运行devtools::install_github("你的用户名/Mycpp", auth_token = "你的PAT")确保包能正常安装,再用rsconnect::deployApp(dryRun = TRUE)模拟部署,提前排查问题。确认shinyapps.io与GitHub的关联权限:
登录shinyapps.io账户,进入「账户设置」→「集成」,确认GitHub已正确关联,且用于关联的PAT拥有私有仓库的访问权限。
内容的提问来源于stack exchange,提问作者dhc
相关产品推荐
相关产品推荐

