无法在 MRS 远程会话中加载 data.table 程序包
Cannot load data.table package in MRS remote session
当我尝试在 MS R 服务器上的远程会话中加载 data.table 程序包时,出现错误:
REMOTE> library(data.table)
Error: package or namespace load failed for 'data.table'
直接使用命名空间我得到了更多的颜色:
REMOTE> data.table::data.table(x = 1)
Error: .onLoad failed in loadNamespace() for 'data.table', details:
call: assign("cbind.data.frame", tt, envir = asNamespace("base"), inherits = FALSE)
error: cannot change value of locked binding for 'cbind.data.frame'
关于如何解决这个问题有什么建议吗?
这里有一些关于 R 服务器设置方式和我如何安装包的更多信息:
- R 服务器 运行s 在与我启动远程会话的机器不同的机器上(称之为 A)。机器 A 配置为一体机,即该机器上的网络节点和计算节点都 运行。
- 我运行通过 Microsoft Visual Studio Professional 2015 版本 14.0.25431.01 Update 3,Microsoft .NET Framework 版本 4.6.01038 在我的本地机器上安装 R 客户端(称之为 B) Visual Studio 的 R 工具,1.0.30228.1316 RC2.
- 我通过 运行ning 'Rgui' 控制台使用以下命令直接在机器 A 上安装了 data.table 软件包:install.packages('data.table')。该库安装到机器 A 上 R_LIBS 系统环境变量指定的 lib C:\RglobalPkgs 中。
我在机器 B 运行上创建了一个远程会话:
library(mrsdeploy)
remoteLogin("http://machineA:12800",
username = "admin",
password = "xyz",
session = TRUE,
commandline = TRUE)
在远程会话中,我尝试加载 data.table 包,如上所述,在我的问题开始时失败了。 运行 远程会话中的 .libPath() 给出:
REMOTE> .libPaths()
[1] "C:/RglobalPkgs"
[2] "C:/Program Files/Microsoft/R Server/R_SERVER/library"
我就此事给开发团队发了邮件。以下回复:
We're aware of the issue and will push a fix in the next release.
A workaround is to go to C:\Program Files\Microsoft\R Server\R_SERVER\deployr\RServe\RScripts\source.R on the machine with the compute node and comment out
# unlockBinding("unlockBinding",b)
# assign("unlockBinding", deployr.unlock, envir=b)
# lockBinding("unlockBinding", b)
Then go to services and restart the RServe9.0.0 service.
当我尝试在 MS R 服务器上的远程会话中加载 data.table 程序包时,出现错误:
REMOTE> library(data.table)
Error: package or namespace load failed for 'data.table'
直接使用命名空间我得到了更多的颜色:
REMOTE> data.table::data.table(x = 1)
Error: .onLoad failed in loadNamespace() for 'data.table', details:
call: assign("cbind.data.frame", tt, envir = asNamespace("base"), inherits = FALSE)
error: cannot change value of locked binding for 'cbind.data.frame'
关于如何解决这个问题有什么建议吗?
这里有一些关于 R 服务器设置方式和我如何安装包的更多信息:
- R 服务器 运行s 在与我启动远程会话的机器不同的机器上(称之为 A)。机器 A 配置为一体机,即该机器上的网络节点和计算节点都 运行。
- 我运行通过 Microsoft Visual Studio Professional 2015 版本 14.0.25431.01 Update 3,Microsoft .NET Framework 版本 4.6.01038 在我的本地机器上安装 R 客户端(称之为 B) Visual Studio 的 R 工具,1.0.30228.1316 RC2.
- 我通过 运行ning 'Rgui' 控制台使用以下命令直接在机器 A 上安装了 data.table 软件包:install.packages('data.table')。该库安装到机器 A 上 R_LIBS 系统环境变量指定的 lib C:\RglobalPkgs 中。
我在机器 B 运行上创建了一个远程会话:
library(mrsdeploy) remoteLogin("http://machineA:12800", username = "admin", password = "xyz", session = TRUE, commandline = TRUE)
在远程会话中,我尝试加载 data.table 包,如上所述,在我的问题开始时失败了。 运行 远程会话中的 .libPath() 给出:
REMOTE> .libPaths() [1] "C:/RglobalPkgs" [2] "C:/Program Files/Microsoft/R Server/R_SERVER/library"
我就此事给开发团队发了邮件。以下回复:
We're aware of the issue and will push a fix in the next release. A workaround is to go to C:\Program Files\Microsoft\R Server\R_SERVER\deployr\RServe\RScripts\source.R on the machine with the compute node and comment out
# unlockBinding("unlockBinding",b) # assign("unlockBinding", deployr.unlock, envir=b) # lockBinding("unlockBinding", b)
Then go to services and restart the RServe9.0.0 service.