rpy2 无法加载外部库 [英] rpy2 failing to load external library

查看:51
本文介绍了rpy2 无法加载外部库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Hoping someone can help with this.

R 版本:2.14.1
rpy2 版本:2.2.5
蟒蛇版本:2.7.3

R version: 2.14.1
rpy2 version: 2.2.5
python version: 2.7.3

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

Been trying to load R venneuler package, which has rJava as a dependency, using rpy2 in a python script. Both venneuler and rJava succesfully load from within R environment. Other R libraries, such as 'stats','car',etc can be loaded in python using importr from rpy2.

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:

In the course of troubleshooting, I tried to load rJava directly using importr:

>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

当我检查'/home/adam/R/x86_64-pc-linux-gnu-library/2.14/rJava/libs/rJava.so'它存在并且似乎正确链接到java动态库(例如ldd rJava.所以).

When I check '/home/adam/R/x86_64-pc-linux-gnu-library/2.14/rJava/libs/rJava.so' it exists and appears to be linked correctly to java dynamic libraries (e.g. ldd rJava.so).

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

Any ideas about how to fix this?

推荐答案

我遇到了同样的问题,并通过 Stack Overflow 寻找了几个答案.在这里,我终于找到了答案:

I had the same problem, and looked for several answers through Stack Overflow. Here, I finally found an answer:

错误:现在无法加载已安装的软件包

尝试运行

R CMD javareconf -e

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

without sudo or anything, just as a regular user, and then try loading the library.

让我知道它是否有效.它对我有用.

Let me know if it worked. It did for me.

干杯!

这篇关于rpy2 无法加载外部库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆