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

请求升级shinyapps.io的GEOS版本或提供临时绕过方案

解决shinyapps.io上GEOS版本过低导致lwgeom安装失败的问题

我完全懂你现在的头疼事——shinyapps.io自带的GEOS版本是3.5.1,而lwgeom包要求至少3.6.0,平台还没更新,得找临时办法绕过去。下面几个方案你可以挨个试试:

方案1:安装兼容低GEOS版本的旧版lwgeom

lwgeom早期版本对GEOS的要求更低,你可以指定安装适配GEOS 3.5.1的旧版本:

  • 如果你用renv管理依赖,直接在renv.lock里把lwgeom的版本改成0.2-2(这个版本明确支持GEOS 3.5.x)
  • 要是没有用renv,就在你的部署脚本里指定版本安装:
install.packages("lwgeom", version = "0.2-2", repos = "https://cran.r-project.org")

注意:旧版本可能缺少一些新功能,但能保证在当前shinyapps.io环境下正常运行

方案2:用其他包替代lwgeom的功能

如果你的应用只用到了lwgeom的部分功能,可以尝试用sf包的原生函数替代:

  • 比如st_make_valid()这类常用函数,sf后来也集成了类似功能,而且sf在shinyapps.io上的版本应该适配了现有GEOS 3.5.1环境
  • 梳理代码里调用lwgeom的逻辑,看看能不能用sf或其他空间处理包的函数完成相同操作,完全去掉lwgeom的依赖

方案3:手动编译适配低GEOS版本的lwgeom(进阶)

这个方法适合有一定R包编译经验的开发者,可控性更高:

  1. 本地搭建和shinyapps.io一致的环境——比如用rocker/r-ver:4.0.0镜像(错误日志显示R版本是4.0.0),在容器里安装GEOS 3.5.1
  2. 在这个环境下编译lwgeom包,生成适配的二进制包或源码包
  3. 把编译好的包文件放到你的应用目录里,部署时优先安装本地包,而不是从CRAN拉取:
install.packages("./lwgeom_xxx.tar.gz", repos = NULL, type = "source")

方案4:临时移除lwgeom依赖(如果可行)

如果lwgeom只是应用里的非核心功能,或者只是用于测试,可以暂时注释掉相关代码和依赖声明,先完成部署,等shinyapps.io更新GEOS版本后再重新加回来。


内容的提问来源于stack exchange,提问作者Jean-Phi N

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 21:02:53