【问题标题】:Use `rpy2` with packages installed for `R` in conda virtual environment?在 conda 虚拟环境中使用为 `R` 安装的软件包的 `rpy2`?
【发布时间】:2017-06-26 20:03:21
【问题描述】:

我一直在努力保持我的环境不冗余和干净,所以我创建了一个R 环境并清除了我计算机上所有其他现有的Rs。

那个环境叫做r-conda,它在:

/Users/jespinoz/anaconda/envs/r-conda/bin/R

我意识到我没有安装 rpy2 并通过 conda 安装它想要安装新版本的 R 和所有我不想要的 r-essentials,因为我已经有了完美运行的 R 环境。

我意识到我可以为在 R conda 环境中关联的 Python 安装 rpy2

source activate r-conda
pip install rpy2
source deactivate

但并非所有路径都排成一行

如何让rpy2 在我的r-conda 环境中识别我所有的R 关联文件和路径?

当我尝试导入包时找不到正确的文件:

os.environ['R_HOME'] = "/Users/jespinoz/anaconda/envs/r-conda/bin/R"
from rpy2.robjects.packages import importr
importr("dynamicTreeCut")

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-29-8b0a88dfe12d> in <module>()
      1 # os.environ['R_HOME'] = '/Users/jespinoz/anaconda/envs/r-conda/bin/'
      2 os.environ['R_HOME'] = "/Users/jespinoz/anaconda/envs/r-conda/bin/R"
----> 3 from rpy2.robjects.packages import importr
      4 importr("dynamicTreeCut")

/Users/jespinoz/anaconda/lib/python3.6/site-packages/rpy2/robjects/__init__.py in <module>()
     14 import itertools
     15 from datetime import datetime
---> 16 import rpy2.rinterface as rinterface
     17 import rpy2.rlike.container as rlc
     18 

/Users/jespinoz/anaconda/lib/python3.6/site-packages/rpy2/rinterface/__init__.py in <module>()
     90 del(os)
     91 
---> 92 from rpy2.rinterface._rinterface import (baseenv,
     93                                          emptyenv,
     94                                          endr,

ImportError: dlopen(/Users/jespinoz/anaconda/lib/python3.6/site-packages/rpy2/rinterface/_rinterface.cpython-36m-darwin.so, 2): Library not loaded: @rpath/R/lib/libR.dylib
  Referenced from: /Users/jespinoz/anaconda/lib/python3.6/site-packages/rpy2/rinterface/_rinterface.cpython-36m-darwin.so
  Reason: image not found

通过将其添加到我的~/.bash_profile 来修复该错误,但生成了一个类似的新错误: 我试了一下,错误改了:

export LD_LIBRARY_PATH="/Users/jespinoz/anaconda/envs/r-conda/lib/R/lib/:$LD_LIBRARY_PATH" 

>>> from rpy2.robjects.packages import importr
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/jespinoz/anaconda/lib/python3.6/site-packages/rpy2/robjects/__init__.py", line 16, in <module>
    import rpy2.rinterface as rinterface
  File "/Users/jespinoz/anaconda/lib/python3.6/site-packages/rpy2/rinterface/__init__.py", line 92, in <module>
    from rpy2.rinterface._rinterface import (baseenv,
ImportError: dlopen(/Users/jespinoz/anaconda/lib/python3.6/site-packages/rpy2/rinterface/_rinterface.cpython-36m-darwin.so, 2): Library not loaded: libicuuc.54.dylib
  Referenced from: /Users/jespinoz/anaconda/lib/python3.6/site-packages/rpy2/rinterface/_rinterface.cpython-36m-darwin.so
  Reason: image not found

所以我尝试了这个,然后得到了同样的错误:

export LD_LIBRARY_PATH="/Users/jespinoz/anaconda/envs/r-conda/lib/R/lib/:/Users/jespinoz/anaconda/pkgs/icu-54.1-0/lib/:$LD_LIBRARY_PATH"

如果我使用conda install rpy2,它想安装Python=3.5.2,即使我的主要 conda 环境的默认版本是Python=3.6。 @asmeurer 建议在我的r-conda 环境中安装rpy2 时指定Python=3.6,但现在它看起来像一个包冲突错误:

(r-conda) jespinozlt-osx:~ jespinoz$ conda install rpy2 python=3.6
Fetching package metadata .............
Solving package specifications: .


UnsatisfiableError: The following specifications were found to be in conflict:
  - python 3.6*
  - r-permute
  - rpy2
Use "conda info <package>" to see the dependencies for each package

【问题讨论】:

    标签: python r environment-variables conda rpy2


    【解决方案1】:

    你应该 conda install rpy2 而不是 pip 安装它。另外,保持环境激活。你应该 conda install python 和任何你想在同一个 R 环境中使用的 Python 包,这样一切都在一个环境中完成。

    【讨论】:

    • 当我从conda install rpy2 使用我的r-conda 环境时,它想安装另一个版本的python,即使该环境的默认python 是我的主要版本python=3.6。我唯一的选择是安装 2 个版本的 R、2 个版本的 Python,还是将它们合并到同一个环境中?我觉得我可以使用路径和环境变量来告诉rpy2 我的R 文件所在的位置。
    • 我不知道为什么会这样,但是你可以通过在安装命令中包含它来强制它保留你想要的python版本,比如conda install rpy2 python=3.6
    • 我不知道你能做到这一点。不错,谢谢!不过,看起来我遇到了一些相互矛盾的错误(更新问题 b/c 格式)`
    • 我猜这意味着 r-permute 需要更新。你必须让 Continuum 的人来更新它(我不再在那里工作了)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 2021-08-04
    • 2022-10-13
    • 2018-04-26
    • 2021-08-28
    相关资源
    最近更新 更多