在 conda 虚拟环境中使用为“R”安装的包使用“rpy2”?

O.r*_*rka 6 python r environment-variables rpy2 conda

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

该环境称为r-conda

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

我意识到我没有rpy2安装并通过 conda 安装它,它想要安装新版本R以及所有r-essentials我不想要的东西,因为我已经有了一个完美工作的 R 环境。

我意识到我可以在环境中安装相关rpy2的:PythonR conda

source activate r-conda
pip install rpy2
source deactivate
Run Code Online (Sandbox Code Playgroud)

但并非所有路径都排列整齐

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

当我尝试导入包时,它没有正确找到文件:

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
Run Code Online (Sandbox Code Playgroud)

通过将其添加到我的中修复了该错误~/.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
Run Code Online (Sandbox Code Playgroud)

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

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"
Run Code Online (Sandbox Code Playgroud)

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

(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
Run Code Online (Sandbox Code Playgroud)

asm*_*rer 4

你应该conda install rpy2代替 pip 安装它。另外,保持环境活跃。您应该 conda installpython和您想要使用的任何 Python 包到同一个 R 环境中,以便一切都在单个环境中完成。