Mac M1环境下Jupyter Notebook中rpy2导入失败求助
Mac M1下Jupyter Notebook导入rpy2失败但终端正常的解决建议
问题场景
Mac M1芯片环境中,在JupyterLab(版本3.6.5)执行from rpy2.robjects.packages import importr时出现错误,但在终端运行相同Python代码无异常。本地同时存在ARM版R(路径/opt/R/arm64/)和Intel版R(路径/opt/R/x86_64/),使用的conda环境为ds_project。
报错信息
执行导入语句时,先出现以下错误:
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)
已尝试的无效方法
- 通过conda安装
r-base、r-essentials - 手动设置
R_HOME环境变量指向conda环境中的R路径 - 排查过GitHub上Intel版R与M1兼容的issue,但当前错误不匹配
解决建议
1. 确认Jupyter使用正确的conda环境内核
- 在终端执行
jupyter kernelspec list,查看是否存在ds_project对应的内核;若没有,执行以下命令添加:conda activate ds_project python -m ipykernel install --user --name ds_project --display-name "Python (ds_project)" - 重启JupyterLab,切换到
Python (ds_project)内核后重试导入操作。
2. 强制Jupyter使用ARM版R
方法一:在Notebook开头设置环境变量
在导入rpy2前添加以下代码:
import os # 指定ARM版R的安装路径 os.environ['R_HOME'] = '/opt/R/arm64/' # 配置动态库搜索路径 os.environ['LD_LIBRARY_PATH'] = '/opt/R/arm64/lib:' + os.environ.get('LD_LIBRARY_PATH', '') os.environ['DYLD_FALLBACK_LIBRARY_PATH'] = '/opt/R/arm64/lib:' + os.environ.get('DYLD_FALLBACK_LIBRARY_PATH', '') # 再执行导入 from rpy2.robjects.packages import importr
方法二:启动Jupyter前在终端设置环境变量
在终端执行以下命令后启动JupyterLab:
conda activate ds_project export R_HOME=/opt/R/arm64/ export LD_LIBRARY_PATH=/opt/R/arm64/lib:$LD_LIBRARY_PATH export DYLD_FALLBACK_LIBRARY_PATH=/opt/R/arm64/lib:$DYLD_FALLBACK_LIBRARY_PATH jupyter-lab
3. 修复conda环境中R的依赖缺失
报错显示缺少libblas.3.dylib,可尝试以下操作:
- 安装OpenBLAS依赖:
conda activate ds_project conda install -c conda-forge openblas - 重新安装conda环境中的R:
conda activate ds_project conda remove r-base r-essentials conda install -c conda-forge r-base r-essentials
4. 检查VSCode的环境配置
- 若使用VSCode的Jupyter插件,点击左下角的Python解释器选择器,确保选中
ds_project环境下的Python解释器。 - 关闭VSCode后重新打开,确保环境变量和配置生效后重试。
内容的提问来源于stack exchange,提问作者user1237300
相关产品推荐
相关产品推荐

