不同平台中的sessionInfo之间的不一致

问题描述

在调试闪亮的应用程序时,我注意到相同的源代码在本地(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()的结果却不同。 仔细观察(以下输出),您可能会注意到“通过命名空间加载(但未附加)的软件包”列表有所不同,因为服务器未加载:

  1. sourcetools_0.1.7
  2. farver_2.0.3
  3. yaml_2.2.1
  4. plus,在服务器上,它会在crosstalk_1.0.1之前加载hms_0.5.3(与本地计算机不同)

不确定这些差异是否会很容易造成问题,因为必须使用packagename::在“已加载但未附加”包中访问对象。
尽管如此,令我惊讶的是看到这些差异并想知道是什么原因导致这种行为,以及这是否正常。

本地输出sessionInfo()

enter image description here

输出sessionInfo()服务器:

enter image description here

如果我加载最少数量的软件包(仅限Shiny),则存在以下差异:

  1. 服务器列出xtable,然后列出jsonlite,而在本地列出相反的方式;
  2. 服务器列出yaml和rsconnect,而在本地则没有。

本地输出sessionInfo()

enter image description here

输出sessionInfo()服务器:

enter image description here

解决方法

‘rsconnect’是Shiny Server用于部署的软件包。这说明了为什么将其自动加载到为Shiny Server配置的R实例中。 1

看看它的dependencies,我们看到它导入了“ yaml”包。这解释了为什么还要加载此软件包。最后,它还导入了“ jsonlite”包。并且由于'rsconnect'在R启动时作为默认软件包加载,这解释了为什么其导入要比'shiny'软件包的加载更早地加载,因此,为什么sessionInfo的软件包顺序在本地和本地都不同。服务器会话。


1 服务器上的options('defaultPackages')的值应包含“ rsconnect”。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...