rpy2无法加载外部库

问题描述 投票:1回答:2

希望有人能帮忙解决这个问题。

R版本: 2.14.1 rpy2版本: 2.2.5 python版本: 2.7.3

我尝试在python脚本中使用rpy2加载R venneuler包,其中rJava是一个依赖项。venneuler和rJava都能从R环境中成功加载。其他R库,如'stats','car'等也可以在python中使用rpy2的importr加载。

Python代码。

 >from rpy2 import robjects  
 >from rpy2.robjects.packages import importr  
 >venn=importr('venneuler')

导致出现以下错误

Warning message:
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE,  :
  there is no package called ‘venneuler’
Error in .Primitive("as.environment")("package:venneuler") : 
  no item called "package:venneuler" on the search list
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/rpy2/robjects/packages.py", line 117, in importr
    env = _as_env(rinterface.StrSexpVector(['package:'+name, ]))
rpy2.rinterface.RRuntimeError: Error in .Primitive("as.environment")("package:venneuler") : 
  no item called "package:venneuler" on the search list

在排除故障的过程中,我尝试用importr直接加载rJava。

>java=importr('rJava')

得到以下错误信息

Error : .onLoad failed in loadNamespace() for 'rJava', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/home/adam/R/x86_64-pc-linux-gnu-library/2.14/rJava/libs/rJava.so':
  libjvm.so: cannot open shared object file: No such file or directory
Error in .Primitive("as.environment")("package:rJava") : 
  no item called "package:rJava" on the search list
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/rpy2/robjects/packages.py", line 117, in importr
    env = _as_env(rinterface.StrSexpVector(['package:'+name, ]))
rpy2.rinterface.RRuntimeError: Error in .Primitive("as.environment")("package:rJava") : 
  no item called "package:rJava" on the search list

当我检查'homeadamRx86_64-pc-linux-gnu-library2.14rJavalibsrJava.so'时,它是存在的,并且似乎正确地链接到了java动态库(例如ldd rJava.so)。

有什么办法可以解决这个问题吗?

python r rpy2
2个回答
2
投票

我也遇到了同样的问题,在Stack Overflow中找了好几个答案,终于在这里找到了答案:R venneuler包中有rJava作为依赖,在python中使用rpy2。在这里,我终于找到了一个答案。

错误:刚才无法加载已安装的包

R CMD javareconf -e

不使用sudo或任何东西,只是作为一个普通用户,然后尝试加载库。

让我知道是否成功。对我来说是这样的。

干杯!


0
投票

我打赌你的错误将通过使用下面的尝试而消失。

from rpy2.robjects.packages import importr
utils = importr('utils')
utils.install_packages('rJava')

现在你可以在python中编译你的r代码了,但请确保通过使用上述尝试来安装r依赖关系。 希望这对你有用。

© www.soinside.com 2019 - 2024. All rights reserved.