首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法加载共享对象“TMB.so”

无法加载共享对象“TMB.so”
EN

Stack Overflow用户
提问于 2022-01-16 05:03:59
回答 1查看 750关注 0票数 2

我通过conda conda install -c conda-forge r-broom.mixed安装了conda conda install -c conda-forge r-broom.mixed包,但是它没有导入,并显示了错误消息:

代码语言:javascript
复制
library(broom.mixed)

Error: package or namespace load failed for ‘broom.mixed’:
 .onLoad failed in loadNamespace() for 'TMB', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/local/home/hsinhung/anaconda3/envs/r-env/lib/R/library/TMB/libs/TMB.so':
  libopenblas.so.0: cannot open shared object file: No such file or directory

2022/1/17增加了“希望”可重复的例子:

我通过以下命令在Anaconda中创建了一个干净的R环境:

conda create -n r_env_test r-essentials r-base (跟随Anaconda R env指令)

conda activate r_env_test

conda install -c conda-forge r-broom.mixed (跟随Anaconda broom.mixed指令)

然后输入R控制台,并执行library(broom.mixed)。错误立即弹出:

代码语言:javascript
复制
> library(broom.mixed)
Error: package or namespace load failed for ‘broom.mixed’:
 .onLoad failed in loadNamespace() for 'TMB', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/local/home/hsinhung/anaconda3/envs/r_env_test/lib/R/library/TMB/libs/TMB.so':
  libopenblas.so.0: cannot open shared object file: No such file or directory
In addition: Warning message:
package ‘broom.mixed’ was built under R version 3.6.3

正如@merv所建议的,这里是新测试环境中包版本的输出:

代码语言:javascript
复制
x86_64-conda_cos6-linux-gnu % conda list '(libblas|liblapack|r-base|r-tmb|r-broom.mixed)'
# packages in environment at /home/hsinhung/anaconda3/envs/r_env_test:
#
# Name                    Version                   Build  Channel
r-base                    3.6.1                haffb61f_2
r-base64enc               0.1_3             r36h96ca727_4
r-broom.mixed             0.2.6             r36h6115d3f_0    conda-forge
r-tmb                     1.7.16            r36h0357c0b_0    conda-forge
(r_env_test)
(22-01-17 8:16:12) <0> [~]
x86_64-conda_cos6-linux-gnu %

有什么建议吗?我怎样才能把这个包裹送到Anaconda?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-16 19:30:39

不适当的通道混合

我认为所遇到的问题主要是由默认通道(特别是r通道)和conda-forge通道混合驱动的。这是已知导致共享库中缺少库和缺少符号引用。,因为Anaconda和Conda使用不同的构建堆栈,有时使用不同的菜谱。

在这种情况下,r-broom.mixed依赖于r-tmb,而Conda依赖于libblasliblapack,但是r通道没有这些依赖关系。

建议:仅限于Conda Forge

通常,我建议想要R环境的Conda用户只使用Conda,并避免使用r通道。这是因为r通道大部分已被我所知道的(例如,没有releases 4版本,并且大多数软件包已经超过一年没有更新)所抛弃。

此外,我不赞成使用r-essentials包。类似于Python的Anaconda发行版(anaconda包),r-essentials包将许多预期将被数据科学家使用的包捆绑在一起,但在我看来,其中一些包看起来很臃肿。让我烦恼的是,除了R之外,它最终还会引入Python,没有人需要将Python与R环境混合在一起。这是由于包含了notebook,如果用户真的希望将R环境作为内核加载,他们只需要r-irkernel (如下面所示)。

总之,只要做以下工作就可以了:

代码语言:javascript
复制
conda create -n foo -c conda-forge r-base r-broom.mixed

游行示威

为了验证BLAS实现没有什么区别,我使用MKL和OpenBLAS进行了测试。

在以下设置中,我没有遇到任何问题:

代码语言:javascript
复制
## dedicated jupyter environment
mamba create -n jupyter jupyter nb_conda_kernels

## broom.mixed with MKL backend
mamba create -n broom_mkl r-base=4.1 r-broom.mixed r-irkernel 'blas=*=*mkl*'

## broom.mixed with OpenBLAS backend
mamba create -n broom_openblas r-base=4.1 r-broom.mixed r-irkernel 'blas=*=*openblas*'

## launch jupyter
conda activate jupyter
jupyter notebook

随着木星的发射,我可以创建一个新的笔记本电脑的broom_mklbroom_openblas内核,并运行library(broom.mixed)加载没有任何错误。

这是在osx-64平台上进行的.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70727524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档