错误:包或命名空间加载失败发生在RStudio中,而不是R控制台中

5kgi1eie  于 2023-03-10  发布在  其他
关注(0)|答案(1)|浏览(179)

在conda环境中工作时,我观察到R〉=4.1.3时出现了一个意外的行为。也就是说,在终端中,我可以启动R并加载基于GDAL的库

R version 4.1.3 (2022-03-10) -- "One Push-Up"
Copyright (C) 2022 The R Foundation for Statistical Computing
Platform: x86_64-conda-linux-gnu (64-bit)

... STANDARD R MESSAGE ...

> library(sf)
Linking to GEOS 3.11.1, GDAL 3.6.2, PROJ 9.1.0; sf_use_s2() is TRUE

但是在RStudio中我得到了下面的错误

R version 4.1.3 (2022-03-10) -- "One Push-Up"
Copyright (C) 2022 The R Foundation for Statistical Computing
Platform: x86_64-conda-linux-gnu (64-bit)

... STANDARD R MESSAGE ...

> library(sf)
Error: package or namespace load failed for ‘sf’ in dyn.load(file, DLLpath = DLLpath, ...):
 unable to load shared object '/home/ivan/miniconda3/envs/r41_dev/lib/R/library/sf/libs/sf.so':
  /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /home/ivan/miniconda3/envs/r41_dev/lib/R/library/sf/libs/../../../../libgdal.so.32)

尽管终端中的行为表明安装了包libstdc++,但我已经从the Gnome repo重新安装了它。该包肯定安装在我的机器上。

apt list --installed | grep libstdc++ 

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libstdc++-8-dev/focal,now 8.4.0-3ubuntu2 amd64 [installed,automatic]
libstdc++-9-dev/focal-updates,focal-security,focal-security,now 9.4.0-1ubuntu1~20.04.1 amd64 [installed,automatic]
libstdc++6/focal,now 11.1.0-1ubuntu1~20.04 amd64 [installed]
libstdc++6/focal,now 11.1.0-1ubuntu1~20.04 i386 [installed,automatic]

Rstudio版本为

RStudio 2022.07.2+576 "Spotted Wakerobin" Release (e7373ef832b49b2a9b88162cfe7eac5f22c40b34, 2022-09-06) for Ubuntu Bionic
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.12.8 Chrome/69.0.3497.128 Safari/537.36

这里是会话信息

>  sessionInfo()
R version 4.1.3 (2022-03-10)
Platform: x86_64-conda-linux-gnu (64-bit)
Running under: Ubuntu 20.04.5 LTS

Matrix products: default
BLAS/LAPACK: /home/ivan/miniconda3/envs/r41_dev/lib/libopenblasp-r0.3.21.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=de_DE.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=de_DE.UTF-8    LC_MESSAGES=en_US.UTF-8    LC_PAPER=de_DE.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=de_DE.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
 [1] compiler_4.1.3     magrittr_2.0.3     class_7.3-21       DBI_1.1.3          tools_4.1.3        units_0.8-1       
 [7] proxy_0.4-27       Rcpp_1.0.10        KernSmooth_2.23-20 grid_4.1.3         e1071_1.7-13       classInt_0.4-8

我在RStudio中使用conda环境已经有一段时间了,我遇到了很多挑战,但我似乎没有能力解决这个问题。
谁能帮我理解为什么RStudio不能访问这个包,而R可以从终端访问它?
顺便说一句,这个问题在R= 4. 0. 5时不会发生,据我所知,在R= 4. 1时也不会发生。我当然多次更新apt,但我不记得对我的系统进行过任何重大更新。
编辑以解决@merv在评论中提出的问题
我用不同的R版本创建了几个环境,试图构建和解决这个问题,但没有成功。
我现在遵循以下步骤:
1.使用conda -V检查conda版本,返回conda 22.11.1
1.使用conda create -n r41_test -c conda-forge r-base=4.1.3 r-sf -y创建全新的环境
1.使用conda activate r41_test激活环境1将conda list输出保存到文件并共享through this link
1.从终端启动R
1.使用library(sf)加载sf库,库加载没有问题
1.使用q()关闭R并键入n,以避免保存工作空间图像
1.通过键入rstudio启动RStudio(从激活的环境)
1.从RStudio中的R控制台使用library(sf)加载库sf,库加载失败,并出现与上述报告相同的错误。
在运行此测试时,我注意到一些以前没有注意到的事情:当在步骤2中创建conda环境时,打印了以下消息,但环境创建成功。我还可以激活它,从终端启动R,并加载库,尽管存在SafetyError

Downloading and Extracting Packages

Preparing transaction: done
Verifying transaction: | 
SafetyError: The package for r-base located at /home/ivan/miniconda3/pkgs/r-base-4.1.3-h2f963a2_5
appears to be corrupted. The path 'lib/R/doc/html/packages.html'
has an incorrect size.
  reported size: 3061 bytes
  actual size: 55120 bytes

done

在我之前的文章中,我也在另一台运行Ubuntu 20.04的笔记本电脑上尝试过这个过程。我几乎不使用那台机器,所以它可能是一个“独立控制”。我不确定SafetyError是否也被扔在那里,但RStudio未能在那台机器上加载包。

91zkwejq

91zkwejq1#

我认为这是因为通过deb包安装的rstudio没有使用conda环境中的libstdc++.so
尝试:

conda activate my-env
export LD_LIBRARY_PATH=/path/to/envs/my-env/lib/
rstudio

相关问题