【发布时间】:2020-05-16 06:43:59
【问题描述】:
我目前正在开展一个项目,该项目旨在为 vanilla 提供应用程序 - 通过运行已实现的功能和算法 - 并且还易于扩展,以帮助其他研究人员“只需在此处插入额外的代码” “架构。
我使用的是 Python 后端的 Electron,它反过来也使用 rpy2 库与 R 进行通信。
问题是我的 Python 代码需要加载的 R 库之一使用 rJava,而我发现使语法 rpackages.importr('rJava') 工作的唯一方法是,在运行 Python 脚本之前,导出一些 R/Java 变量(我认为它是这样做的)使用命令R CMD javareconf -e,然后它在Ubuntu上运行良好。
我也在 Windows 上简单地测试了这个解决方案,但它不起作用。所以我想知道我该如何解决它,如果有另一种方法。
在 Linux 场景中,您认为在 R CMD 命令之前运行 npm start(针对整个 Electron 应用程序)会起作用吗?没有更好的解决方案吗?
我也在考虑使用 Docker 容器,但我担心这会使其他研究人员更难将他们的代码插入应用程序(例如,如果需要外部库)。
不使用R CMD javareconf -e的错误是这样的:
...............
File "/usr/local/lib/python3.7/dist-packages/rpy2/robjects/packages.py", line 483, in importr
env = _get_namespace(name)
File "/usr/local/lib/python3.7/dist-packages/rpy2/rinterface_lib/conversion.py", line 40, in _
cdata = function(*args, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/rpy2/rinterface.py", line 791, in __call__
raise embedded.RRuntimeError(_rinterface._geterrmessage())
rpy2.rinterface_lib.embedded.RRuntimeError: Error: .onLoad failed in loadNamespace() for 'rJava', details:
call: dyn.load(file, DLLpath = DLLpath, ...)
error: unable to load shared object '/home/thispc/R/x86_64-pc-linux-gnu-library/3.6/rJava/libs/rJava.so':
libjvm.so: cannot open shared object file: No such file or directory
我已经尝试过~$sudo R CMD javareconf
【问题讨论】: