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

部署R Shiny应用时randomForestSRC库加载失败问题求助

问题描述

Shiny应用使用randomForestSRC库,本地运行正常,但上传至手动部署的在线服务器时,加载该库出现以下错误:

su: ignore --preserve-environment, it's mutually exclusive to --login.
Warning: package ‘randomForestSRC’ was built under R version 4.3.1
Error: package or namespace load failed for ‘randomForestSRC’ in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]):
 namespace ‘htmltools’ 0.5.2 is already loaded, but >= 0.5.4 is required
Execution halted

系统显示已加载旧版本htmltools,但已安装最新版本。单独加载htmltools时出现以下错误:

su: ignore --preserve-environment, it's mutually exclusive to --login.
Warning: package ‘htmltools’ was built under R version 4.3.0
Error in value[[3L]](cond) : 
  Package ‘htmltools’ version 0.5.2 cannot be unloaded:
 Error in unloadNamespace(package) : namespace ‘htmltools’ is imported by ‘shiny’ so cannot be unloaded
Calls: runApp ... tryCatch -> tryCatchList -> tryCatchOne -> <Anonymous>
Execution halted

已安装最新版shiny及shinydashboard、shinyjs、shinycssloaders等依赖库,本地无冲突,但服务器端出现版本依赖问题,需排查思路。

排查思路

  • 核对本地与服务器的R版本:randomForestSRC、htmltools等库是基于特定R版本编译的,服务器R版本过低可能引发兼容问题。执行R --version对比两端版本,若服务器版本落后,升级服务器R版本。
  • 检查服务器库路径优先级:服务器可能存在多套R库路径,旧版库可能在系统默认路径,而你安装的新版在自定义路径。运行.libPaths()查看加载顺序,确保自定义路径优先级更高;或获取管理员权限,将新版库安装到系统默认路径。
  • 强制重装所有关联库:在服务器上彻底卸载旧版相关库,再重新安装最新版,避免残留文件干扰:
    # 卸载旧库
    remove.packages(c("htmltools", "shiny", "shinydashboard", "shinyjs", "shinycssloaders", "randomForestSRC"))
    # 重新安装最新版
    install.packages(c("htmltools", "shiny", "shinydashboard", "shinyjs", "shinycssloaders", "randomForestSRC"))
    
    注意:卸载前确认无其他应用依赖这些旧库,防止影响其他服务。
  • 排查服务器启动脚本与全局配置:部署启动脚本或服务器全局R配置文件(如~/.Rprofile、/etc/R/Rprofile.site)可能自动加载旧版shiny或htmltools。检查这些文件,移除自动加载旧库的配置,确保应用启动时优先加载新版库。
  • 用独立环境隔离依赖:使用renv为该Shiny应用创建独立R库环境,避免与服务器全局库冲突:
    1. 本地项目中执行renv::init()初始化环境
    2. 安装所有依赖后执行renv::snapshot()锁定版本
    3. 将renv文件夹与项目文件一同上传至服务器
    4. 服务器端执行renv::restore()恢复依赖环境,再启动应用
  • 验证服务器库的实际版本:在服务器R终端执行以下命令,确认安装的库版本是否符合预期:
    packageVersion("htmltools")
    packageVersion("shiny")
    packageVersion("randomForestSRC")
    
    若显示旧版,说明安装未生效,需检查安装命令输出是否有错误,或是否具备库路径写入权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 01:30:27