将R升级到3.0.1后rpy2无法正常工作

时间:2013-07-05 17:19:49

标签: python r rpy2

我有一个python脚本,内部使用rpy2。这个脚本一直工作到最近。但是,它现在停止了工作。我收到了一个我以前没见过的错误。我可以使用以下代码行重现错误:

$ python
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import rpy2.robjects as robjects
cannot find system Renviron
Error in getLoadedDLLs() : there is no .Internal function 'getLoadedDLLs'
Error in checkConflicts(value) : 
".isMethodsDispatchOn" is not a BUILTIN function
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.6/site-packages/rpy2-2.2.5dev_20120328-py2.6-macosx-10.6-    universal.egg/rpy2/robjects/__init__.py", line 17, in <module>
from rpy2.robjects.robject import RObjectMixin, RObject
File "/Library/Python/2.6/site-packages/rpy2-2.2.5dev_20120328-py2.6-macosx-10.6-universal.egg/rpy2/robjects/robject.py", line 9, in <module>
class RObjectMixin(object):
File "/Library/Python/2.6/site-packages/rpy2-2.2.5dev_20120328-py2.6-macosx-10.6-universal.egg/rpy2/robjects/robject.py", line 22, in RObjectMixin
__show = rpy2.rinterface.baseenv.get("show")
LookupError: 'show' not found

我不知道为什么这不起作用。有没有办法解决这个问题。

5 个答案:

答案 0 :(得分:5)

This page描述了这个问题的潜在解决方案(至少,作者描述的问题看起来非常相似):显然,必须重新编译rpy2并将新版本的R作为参数。

答案 1 :(得分:3)

rpy2-2.2.5属于上一个系列(2.2.x),并且正在使用旧版本的R(R不断发展)。

rpy2的当前版本在2.3.x系列中(最新版本为2.3.6),但它们需要Python 2.7或Python 3.3(如果你想要最新的R,你必须得到一个最新的Python; - ))

答案 2 :(得分:3)

仅供参考:对于Mac用户:按照@Bertrand Moreau分享的链接,这适用于Mac OS X 10.7.5和R 3.0.1:

cd /Users/xx/Downloads/rpy2-2.3.7
export LDFLAGS="-Wl,-rpath,/Library/Frameworks/R.framework/Resources/lib"
sudo python3.3 setup.py build --r-home /Library/Frameworks/R.framework/Resources install
sudo python3.3 setup.py install

我会将此作为对上述内容的评论,但格式化已丢失。所以新手在这里!

答案 3 :(得分:1)

我有类似的问题;我刚刚卸载然后重新安装了rpy2,现在工作正常。

答案 4 :(得分:1)

使用ubuntu 14.04anaconda的{​​{1}}下的解决方案如下:

python2.7

这适用于命令行,也适用于conda install -c https://conda.anaconda.org/r rpy2终端。 但是,仍然无法在pycharm下工作,我收到与OP相同的错误。

它现在可以在pycharm上运行,但在pycharm终端上工作的事实有点奇怪。