在 Mac osx 上通过 anaconda 使用 Python 3.8 和 R 版本 4.0.2 安装 rpy2 时遇到困难

Pai*_*one 6 python r poisson rpy2 anaconda

我以前从未在 python 中使用过 R 代码,但想这样做是为了实现一些泊松回归模型。这样做的原因是效率(泊松回归的 R 代码效率更高)。我尝试通过在终端中输入以下内容来安装 rpy2:

conda 安装-cr rpy2

我也尝试使用 pip install 但没有成功。当我尝试在终端中运行它时,它会在终端本身返回以下错误:

解决环境:current_repodata.json 中的 repodata 失败,将使用下一个 repodata 源重试。收集包元数据 (repodata.json):已完成 解决环境:初始冻结解决失败。使用灵活的解决方案重试。解决环境: / 发现冲突!寻找不兼容的包。这可能需要几分钟的时间。按 CTRL-C 中止。失败的

UnsatisfiableError:发现以下规范与您环境中现有的 python 安装不兼容:

规格:

  • rpy2 -> python[版本='2.7. |3.5。|3.6。|>=2.7,<2.8.0a0|>=3.5,<3.6.0a0|>=3.6,<3.7.0a0|>=3.7,<3.8.0a0|3.4。|3.3.*']

你的Python:python=3.8

如果 python 位于链的最左侧,则这就是您要求的版本。当 python 出现在右侧时,表明左侧的内容在某种程度上不适用于您所限制的 python 版本。请注意,除非您明确指定,否则 conda 不会将您的 python 版本更改为不同的次要版本。

使用 pip install 并运行一些引用 rpy2 模块的代码后,我收到以下错误:

import rpy2.robjects as robjects
import rpy2.robjects.packages as rpackages
from rpy2.robjects.vectors import StrVector


package_names = ('stats')

if all(rpackages.isinstalled(x) for x in package_names):
    have_package = True

else: 
    have_package = False

if not have_package: 
    utils = rpackages.importr('utils')
    utils.chooseCRANmirror(ind=1)
    
    packnames_to_install = [x for x in package_names if not rpackages.isinstalled(x)]
    
    if len(packnames_to_install) > 0: 
        utils.install_packages(StrVector(packnames_to_install))
Run Code Online (Sandbox Code Playgroud)

OSError:无法加载库“/Users/name/opt/anaconda3/lib/R/lib/libR.dylib”:dlopen(/Users/name/opt/anaconda3/lib/R/lib/libR.dylib,2):未加载库:@rpath/libreadline.6.2.dylib 引用自:/Users/name/opt/anaconda3/lib/R/lib/libR.dylib 原因:找不到图像

NameError:名称“rpackages”未定义

有谁知道如何在 python 3.8 中成功使用 rpy2 ?这似乎是 anaconda 的常见问题,但我在网上找不到任何可行的解决方案。非常感谢您提供的任何帮助!

mfa*_*989 8

rpy2 在 conda 的默认通道中不可用。尝试:

\n
    conda install -c conda-forge rpy2\n
Run Code Online (Sandbox Code Playgroud)\n

它使用 conda-forge 通道。

\n

编辑:实际上,我发现最好的方法是:

\n
    \n
  1. 使用 miniconda 发行版。

    \n
  2. \n
  3. 创建特定于项目的 conda 环境。

    \n
  4. \n
  5. 激活这个环境。

    \n
  6. \n
  7. 安装 conda 默认通道中可用的所有 conda 软件包。

    \n
  8. \n
  9. 然后

    \n
     pip install rpy2\n
    Run Code Online (Sandbox Code Playgroud)\n
  10. \n
\n

有关更多详细信息:https ://www.anaconda.com/blog/using-pip-in-a-conda-environment

\n