在RMarkdown中通过reticulate运行Python时遇Numpy 1.22.2完整性检查错误
问题描述
在RStudio Server的RMarkdown文件中使用reticulate包关联conda环境(env1)运行Python时,导入pandas或numpy触发如下错误:
RuntimeError: The current Numpy installation ('/opt/anaconda3/envs/env1/lib/python3.8/site-packages/numpy/__init__.py') fails to pass simple sanity checks. This can be caused for example by incorrect BLAS library being linked in, or by mixing package managers (pip, conda, apt, ...). Search closed numpy issues for similar problems.
环境信息:
- OS:Ubuntu 18.04.6 LTS (Bionic Beaver)
- Python:3.8.5(conda环境
env1) - R:4.1.2
- RStudio Server:1.4.1106
使用的RMarkdown代码片段:
Sys.setenv(RETICULATE_PYTHON = "/opt/anaconda3/envs/env1/bin/python") library(reticulate) reticulate::use_condaenv("env1")
import pandas
解决方案尝试
以下是针对该错误的可操作排查步骤:
1. 检查并修复BLAS/LAPACK依赖冲突
- 激活conda环境:
conda activate env1 - 查看numpy当前链接的BLAS库:
import numpy numpy.__config__.show() - 如果输出显示链接了系统级BLAS库(而非conda提供的版本),强制安装conda的openblas实现:
conda install -n env1 openblas
2. 统一用conda重新安装numpy和pandas
避免混合使用pip和conda导致的包依赖混乱:
- 卸载现有包:
conda remove -n env1 numpy pandas - 仅用conda重新安装指定版本:
conda install -n env1 numpy=1.22.2 pandas
3. 调整reticulate初始化逻辑
不要同时设置RETICULATE_PYTHON环境变量和调用use_condaenv,避免路径冲突:
library(reticulate) # 直接指定conda环境,required=TRUE确保环境存在 use_condaenv(condaenv = "env1", required = TRUE) # 验证Python环境是否正确加载 print(py_config())
4. 清空系统库路径干扰
RStudio Server可能继承系统的LD_LIBRARY_PATH,导致BLAS库冲突,在RMarkdown开头添加:
# 清空系统库路径,避免干扰conda环境的依赖 Sys.unsetenv("LD_LIBRARY_PATH") library(reticulate) use_condaenv("env1")
5. 降级numpy至兼容版本
如果1.22.2在Ubuntu 18.04上存在兼容性问题,尝试降级到更稳定的LTS版本:
conda install -n env1 numpy=1.21.6 pandas
内容的提问来源于stack exchange,提问作者Saurabh Annadate
相关产品推荐
相关产品推荐

