错误:“ rjags”的程序包或名称空间加载失败

时间:2020-06-23 03:14:53

标签: r linux conda jags rjags

在终端中的一个conda环境中,我能够成功安装软件包“ rjags”。但是,当我在该环境中运行R并运行library(rjags)时,出现以下错误:

正在加载所需的程序包:coda错误:'rjags'的程序包或名称空间加载失败:'rjags'的loadNamespace()中的.onLoad失败,详细信息:调用:dyn.load(file,DLLpath = DLLpath,...)错误:无法加载共享对象'/user-path/anaconda3/envs/r-env/lib/R/library/rjags/libs/rjags.so':/ user-path / anaconda3 / envs / r-env / lib /R/library/rjags/libs/rjags.so:未定义符号:_ZN4jags7Console10setRNGnameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj另外:警告消息:1:软件包“ rjags”是在R版本3.6.3之下建立的。 3

如果我使用R进行安装并在另一个环境或基本环境中执行库(rjags),则一切正常。我想知道此错误消息的含义以及如何解决它。

conda list "^(libstdcxx-ng|r-base|r-coda|jags|r-rjags)$"的输出是:

# packages in environment at /user-path/anaconda3/envs/r-env:
#
# Name                    Version                   Build  Channel
jags                      4.3.0                h26a2512_0    conda-forge
libstdcxx-ng              9.1.0                hdf63c60_0  
r-base                    3.6.1                h9bb98a2_1  
r-coda                    0.19_3            r36h6115d3f_2    conda-forge
r-rjags                   4_10              r36h0357c0b_1    conda-forge

1 个答案:

答案 0 :(得分:0)

频道混合错误

我怀疑该错误是由于mixing of Conda Forge and Anaconda packages引起的。组织使用不同的构建堆栈,因此它们构建的动态库最终可能具有不同的内部定义(有关详细信息,请参见this Issue on the Conda Forge repository)。例如,在这种情况下,rjags.so的构建是为了在链接到的库中寻找符号,但在Anaconda构建中找不到它。不幸的是,它链接到太多(请检查ldd rjags.so),我无法找出是什么引起了该问题。

但是,您仍然可以选择一些方法来使rjags正常工作,而不仅仅是精度修复。在任何情况下,解决方案都是优先处理 conda-forge 渠道

选项1:创建一个新的专用环境

如果在此特定环境中实际上不需要rjags,请使用所需的软件包创建一个新的软件包。但是,这样做时,将 conda-forge 设置为优先于默认值的通道:

conda create -n rjags_env -c conda-forge r-rjags
conda activate rjags_env
conda config --env --add channels conda-forge

选项2:使用Conda Forge重新创建环境

如果您的目标是将rjags添加到现有的env中,但是您无法弄清需要更改的特定程序包,则可以使用更新后的优先级重新创建env。

首先,将环境导出到YAML之类的

conda env export -n r-env --no-builds > rjags_env.yaml

下一步,编辑此文件,使通道部分显示为:

name: rjags_env
channels:
  - conda-forge
  - defaults
dependencies:

最后使用以下命令创建新版本的环境

conda env create -f rjags_env.yaml -n rjags_env

附加说明

我还研究了将--update-deps标志与conda install一起使用,但是这迫使env更新到R v4.0.1并中断了r-coda的安装。