Python rpy2无法加载外部库

Python rpy2无法加载外部库,python,r,rpy2,Python,R,Rpy2,希望有人能帮上忙 R版本:2.14.1 rpy2版本:2.2.5 python版本:2.7.3 一直在尝试在python脚本中使用rpy2加载rJava作为依赖项的R venneuler包。venneuler和rJava都成功地从R环境中加载。其他R库,如“stats”、“car”等,可以使用rpy2中的importr在python中加载 Python代码: >from rpy2 import robjects >from rpy2.robjects.packages imp

希望有人能帮上忙

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

一直在尝试在python脚本中使用rpy2加载rJava作为依赖项的R venneuler包。venneuler和rJava都成功地从R环境中加载。其他R库,如“stats”、“car”等,可以使用rpy2中的importr在python中加载

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
得到以下错误

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
错误:。在“rJava”的loadNamespace()中onLoad失败,详细信息:
调用:dyn.load(文件,DLLpath=DLLpath,…)
错误:无法加载共享对象“/home/adam/R/x86_64-pc-linux-gnu-library/2.14/rJava/libs/rJava.so”:
libjvm.so:无法打开共享对象文件:没有此类文件或目录
.Primitive(“as.environment”)(“包:rJava”)中出错:
搜索列表中没有名为“package:rJava”的项目
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/lib/python2.7/dist packages/rpy2/robjects/packages.py”,importr中的第117行
env=_as_env(rinterface.strexpvector(['package:'+name,]))
rpy2.rinterface.rrontimeerror:在.Primitive(“as.environment”)(“包:rJava”)中出错:
搜索列表中没有名为“package:rJava”的项目
当我选中“/home/adam/R/x86_64-pc-linux-gnu-library/2.14/rJava/libs/rJava.so”时,它存在并且似乎正确链接到java动态库(例如ldd rJava.so)


关于如何解决这个问题有什么想法吗?

我也遇到了同样的问题,并通过堆栈溢出寻找了几个答案。在这里,我终于找到了答案:

试着跑

R CMD javareconf -e
没有sudo或任何东西,就像普通用户一样,然后尝试加载库

让我知道它是否有效。对我来说是这样的


干杯

我打赌,通过以下尝试,您的错误将消失:

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

现在您可以用python编译r代码,但请确保使用上述尝试安装r依赖项。希望这对你有用。

你能直接从R中加载rJava吗?魔法,它对我有用!有人能解释发生了什么吗???@Belter-e标志导出“所有检测到的变量”。因此,所有关于
LD_LIBRARY_PATH
JAVA_HOME
的类似答案都可以一下子得到解决(当然,前提是javareconf一开始工作就足够愉快)。
from rpy2.robjects.packages import importr
utils = importr('utils')
utils.install_packages('rJava')