Python 在conda虚拟环境中为'R'安装包时使用'rpy2'?

Python 在conda虚拟环境中为'R'安装包时使用'rpy2'?,python,r,environment-variables,conda,rpy2,Python,R,Environment Variables,Conda,Rpy2,我一直在努力保持我的环境无冗余且干净,因此我创建了一个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 pi

我一直在努力保持我的环境无冗余且干净,因此我创建了一个
R
环境,并清除了我计算机上所有其他现有的
R
s

该环境称为
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
所以我尝试了这个,然后得到了同样的错误:

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
@Asmurer建议在my
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
(r-conda)jespinozlt osx:~jespinoz$conda安装rpy2 python=3.6
正在获取包元数据。。。。。。。。。。。。。
正在解决程序包规范:。
不满意错误:发现以下规范存在冲突:
-python 3.6*
-r置换
-rpy2
使用“conda info”查看每个包的依赖项

您应该
conda安装rpy2
而不是pip安装它。此外,保持环境处于激活状态。您应该将
python
和任何希望使用的python包安装到同一个R环境中,以便在单个环境中完成所有工作

当我使用我的
r-conda
环境
conda安装rpy2
时,它希望安装另一个版本的
python
,即使该环境的默认
python
是我的主版本
python=3.6
。我唯一的选择是安装2个版本的R、2个版本的Python,还是将它们合并到同一个环境中?我觉得我可以通过路径和环境变量来告诉
rpy2
我的
R
文件在哪里。我不知道它为什么会这样做,但你可以通过在install命令中包含它来强制它保持你想要的python版本,比如
conda安装rpy2 python=3.6
。我不知道你能做到。很好,谢谢!不过,看起来我遇到了一些冲突性错误(更新问题b/c格式)`我想这意味着r-permute需要更新。你必须给Continuum的人安装bug来更新它(我不再在那里工作了)。
(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