在 Mac M1 的 Jupyter 笔记本中使用 rpy2 时遇到问题

问题描述 投票:0回答:1

我在使用 Mac M1 的 Jupyter 笔记本中导入 rpy2 时遇到问题。如果我从终端使用 python 运行代码,似乎没有问题。我知道很多人也遇到了问题,例如 github 上的这个问题这个关于安装 rpy2 的问题Windows 的问题,等等

我尝试了很多方法,但似乎都不起作用。我的错误消息也略有不同。

总之,当我导入

from rpy2.robjects.packages import importr
时,我收到错误:

Unable to determine R library path: Command '('/Users/mydir/miniconda3/envs/ds_project/lib/R/bin/Rscript', '-e', 'cat(Sys.getenv("LD_LIBRARY_PATH"))')' died with <Signals.SIGABRT: 6>.

随后

OSError: cannot load library '/Users/mydir/miniconda3/envs/ds_project/lib/R/lib/libR.dylib': dlopen(/Users/mydir/miniconda3/envs/ds_project/lib/R/lib/libR.dylib, 0x0002): Library not loaded: '@rpath/libblas.3.dylib'
Referenced from: '/Users/mydir/miniconda3/envs/ds_project/lib/R/lib/libR.dylib'
Reason: tried: '/Users/mydir/miniconda3/envs/ds_project/lib/R/lib/libblas.3.dylib' (no such file), '/Users/mydir/miniconda3/envs/ds_project/lib/R/lib/../../libblas.3.dylib' (no such file), '/Users/mydir/miniconda3/envs/ds_project/lib/R/lib/libblas.3.dylib' (no such file), '/Users/mydir/miniconda3/envs/ds_project/lib/R/lib/../../libblas.3.dylib' (no such file), '/Users/mydir/miniconda3/envs/ds_project/lib/python3.11/site-packages/../../libblas.3.dylib' (no such file), '/Users/mydir/miniconda3/envs/ds_project/bin/../lib/libblas.3.dylib' (no such file), '/usr/local/lib/libblas.3.dylib' (no such file), '/usr/lib/libblas.3.dylib' (no such file)

在 GitHub 链接中提出的问题中,他们的错误消息与使用基于 intel 的 R 与基于 m1 芯片的 R 的兼容性问题有关。我在这里没有收到该错误。

我已经尝试通过 conda 安装

r-base
r-essentials
,正如人们指出的那样,但它仍然不起作用。

我还尝试根据错误消息设置R路径,如下:

import os
os.environ['R_HOME'] = '/Users/mydir/miniconda3/envs/ds_project/lib/R/'

但它仍然抱怨。

考虑到路径,我发现错误消息很奇怪

/Users/mydir/miniconda3/envs/ds_project/lib/R/bin/Rscript 

存在于我的本地计算机上。

这可能是我的 IDE Vscode 的问题吗?或者使用Jupyter笔记本(我的jupyterlab版本是3.6.5)?如上所述,我在终端上的 python 上运行它不会遇到问题。我的 R 安装也位于

/opt/R/arm64/

但是我有

/opt/R/x86_64/

也可用。

我将非常感谢任何帮助/建议。非常感谢。

python r jupyter-notebook rpy2
1个回答
0
投票

我通过导出 R_HOME 变量解决了这个问题,如下所示:在此处输入链接描述

© www.soinside.com 2019 - 2024. All rights reserved.