【发布时间】:2021-01-26 17:19:01
【问题描述】:
在调试闪亮的应用程序时,我注意到相同的源代码在本地 (macOS Catalina 10.15.6) 和服务器 (Ubuntu 18.04.5 LTS) 上生成的 sessionInfo() 在加载的包方面略有不同。
我从应用程序中删除了所有内容,只留下了包的加载:
packages <- c("shiny", "shinythemes", "shinycssloaders", "tidyverse",
"ggthemes", "scales", "feather", "sf", "leaflet", "leaflet.extras",
"RColorBrewer")
lapply(packages, require, character.only = TRUE)
然后在本地和服务器上打印sessionInfo()。虽然两台机器共享相同的源代码以及 R 和所有包的版本,但sessionInfo() 的结果不同。
仔细观察(下面的输出),您可能会注意到“通过命名空间加载(且未附加)的包”列表的不同之处在于服务器不加载:
- sourcetools_0.1.7
- farver_2.0.3
- yaml_2.2.1
- 另外,在服务器上,它在 crosstalk_1.0.1 之前加载 hms_0.5.3(与本地机器不同)
不确定这些差异是否容易造成问题,即从“已加载但未附加”的包中访问对象,必须以packagename::为前缀。
尽管如此,我还是很惊讶地看到了这种差异,并想知道是什么原因导致了这种行为以及这是否正常。
如果我加载最少数量的包,只有 Shiny,有以下区别:
- 服务器列出 xtable 后跟 jsonlite,而本地则相反;
- 服务器列出 yaml 和 rsconnect,而本地没有。
【问题讨论】:
-
如果你不加载任何包,或者加载尽可能少? 究竟是什么导致了这种差异? — Unrelatedly, don’t use
require, always uselibrary. -
感谢@Konrad Rudolph 的提示。加载最小包(仅限 Shiny),“已加载但未附加”的列表仍然不同。编辑了问题以记录这一点。
标签: r shiny shiny-server