在R的reticulate中加载pandas报错:缺少GLIBCXX_3.4.29
解决R中reticulate加载pandas时GLIBCXX_3.4.29缺失的问题
问题描述
尝试用R的reticulate包加载Python的pandas包,已安装Python3.8并通过conda安装pandas,Python中可正常导入pandas,但在R中执行
pd <- import("pandas")时出现错误:> pd <- import("pandas") Error in py_module_import(module, convert = convert) : ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /home/mnd/miniconda/lib/python3.8/site-packages/pandas/_libs/window/aggregations.cpython-38-x86_64-linux-gnu.so)系统的
/usr/lib/x86_64-linux-gnu/libstdc++.so.6仅包含GLIBCXX_3.4至GLIBCXX_3.4.28版本,尝试通过reticulate::py_install("pandas", force = TRUE)重新安装pandas后,问题依旧。
解决方案
方法1:让reticulate优先使用conda环境的libstdc++
conda环境自带较新的libstdc++库,可通过设置环境变量让R优先加载该库:
- 在R中执行(替换为你的conda环境路径):
Sys.setenv(LD_LIBRARY_PATH = "/home/mnd/miniconda/lib:$LD_LIBRARY_PATH") library(reticulate) use_condaenv("你的conda环境名称") # 若使用base环境可省略 pd <- import("pandas") - 或在终端启动R前设置环境变量:
export LD_LIBRARY_PATH="/home/mnd/miniconda/lib:$LD_LIBRARY_PATH" R
方法2:安装兼容低版本GLIBCXX的pandas版本
高版本pandas依赖较新的libstdc++,可安装对GLIBCXX要求更低的版本(比如1.3.x系列):
- 在conda环境中执行:
conda install pandas=1.3.5 - 或通过reticulate在R中安装:
reticulate::py_install("pandas==1.3.5", force = TRUE)
方法3:手动更新系统libstdc++库
若系统允许,可更新libstdc++到包含GLIBCXX_3.4.29的版本:
- 通过系统软件源更新(以Debian/Ubuntu为例):
sudo apt update sudo apt install --only-upgrade libstdc++6 - 若软件源无更新版本,可从conda复制库文件到系统目录(注意备份原文件):
sudo cp /home/mnd/miniconda/lib/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/
内容的提问来源于stack exchange,提问作者user1701545
相关产品推荐
相关产品推荐

