无法加载共享对象 'TMB.so'
unable to load shared object 'TMB.so'
我通过 conda conda install -c conda-forge r-broom.mixed
安装了 broom.mixed 包,但是它没有导入并显示错误消息:
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 instruction)
conda activate r_env_test
conda install -c conda-forge r-broom.mixed
(继 Anaconda broom.mixed instruction)
然后我进入R
控制台,然后执行library(broom.mixed)
。错误立即弹出:
> 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 所建议的,这里是新测试环境中包版本的输出:
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 中运行吗?
频道混合不当
我认为遇到的问题主要是由于混合了 defaults 频道(特别是 r 频道)和 conda-forge 频道。这是 known to lead to missing libraries and missing symbol references in shared libraries 因为 Anaconda 和 Conda Forge 使用不同的构建堆栈,有时使用不同的配方。
在这种情况下,r-broom.mixed
取决于 r-tmb
,而在 Conda Forge 上则取决于 libblas
和 liblapack
,但取决于 r 频道没有这些依赖项。
推荐:仅限 Conda Forge
一般来说,我建议想要 R 环境的 Conda 用户只使用 Conda Forge,避免使用 r 频道。这是因为据我所知,r 频道大部分已被放弃(例如,没有 R 版本 4 发布,并且大多数软件包已经一年多没有更新)。
此外,我不鼓励使用 r-essentials
包。类似于 Python(anaconda
包)的 Anaconda 发行版,r-essentials
包将许多预计将由数据科学家使用的包捆绑在一起,但其中一些对我来说似乎很臃肿.令我烦恼的是,除了 R 之外,它最终还引入了 Python。没有人需要将 Python 与 R 环境混合。这是由于包含 notebook
,如果用户真的想加载 R 环境作为内核,他们只需要 r-irkernel
(如下所示)。
总而言之,只需执行以下操作就可以了:
conda create -n foo -c conda-forge r-base r-broom.mixed
示范[=45=]
为了验证 BLAS 实现没有影响,我使用 MKL 和 OpenBLAS 进行了测试。
我在使用以下设置时没有遇到任何问题:
## 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
随着 Jupyter 的启动,我可以使用 broom_mkl
或 broom_openblas
内核创建一个新笔记本,并且 运行 library(broom.mixed)
加载时不会出现任何错误。
这是在osx-64平台上。
我通过 conda conda install -c conda-forge r-broom.mixed
安装了 broom.mixed 包,但是它没有导入并显示错误消息:
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 instruction)
conda activate r_env_test
conda install -c conda-forge r-broom.mixed
(继 Anaconda broom.mixed instruction)
然后我进入R
控制台,然后执行library(broom.mixed)
。错误立即弹出:
> 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 所建议的,这里是新测试环境中包版本的输出:
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 中运行吗?
频道混合不当
我认为遇到的问题主要是由于混合了 defaults 频道(特别是 r 频道)和 conda-forge 频道。这是 known to lead to missing libraries and missing symbol references in shared libraries 因为 Anaconda 和 Conda Forge 使用不同的构建堆栈,有时使用不同的配方。
在这种情况下,r-broom.mixed
取决于 r-tmb
,而在 Conda Forge 上则取决于 libblas
和 liblapack
,但取决于 r 频道没有这些依赖项。
推荐:仅限 Conda Forge
一般来说,我建议想要 R 环境的 Conda 用户只使用 Conda Forge,避免使用 r 频道。这是因为据我所知,r 频道大部分已被放弃(例如,没有 R 版本 4 发布,并且大多数软件包已经一年多没有更新)。
此外,我不鼓励使用 r-essentials
包。类似于 Python(anaconda
包)的 Anaconda 发行版,r-essentials
包将许多预计将由数据科学家使用的包捆绑在一起,但其中一些对我来说似乎很臃肿.令我烦恼的是,除了 R 之外,它最终还引入了 Python。没有人需要将 Python 与 R 环境混合。这是由于包含 notebook
,如果用户真的想加载 R 环境作为内核,他们只需要 r-irkernel
(如下所示)。
总而言之,只需执行以下操作就可以了:
conda create -n foo -c conda-forge r-base r-broom.mixed
示范[=45=]
为了验证 BLAS 实现没有影响,我使用 MKL 和 OpenBLAS 进行了测试。
我在使用以下设置时没有遇到任何问题:
## 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
随着 Jupyter 的启动,我可以使用 broom_mkl
或 broom_openblas
内核创建一个新笔记本,并且 运行 library(broom.mixed)
加载时不会出现任何错误。
这是在osx-64平台上。