首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:“rjag”的包或命名空间加载失败

错误:“rjag”的包或命名空间加载失败
EN

Stack Overflow用户
提问于 2020-06-23 03:14:53
回答 1查看 2.3K关注 0票数 4

在终端中的conda环境中,我能够成功地安装包“rjags”。但是,当我在该环境中运行R并运行库(Rjags)时,我会得到以下错误:

加载必需的包: coda错误:“rjag”的包或名称空间加载失败:.onLoad在loadNamespace()中失败,用于“rjag”,详细信息:dyn.load:dyn.load(文件,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 2下生成的:包'coda’是在R版本3.6.3下生成的

如果我安装并使用R,在另一个环境或基本环境中执行库(Rjags),一切都可以正常工作。我想知道这个错误信息意味着什么,以及如何解决它。

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

代码语言:javascript
复制
# 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-25 02:14:05

信道混合出错

我怀疑这个错误是由于Conda Forge和Anaconda封装的混合造成的。组织使用不同的构建堆栈,因此它们构建的动态库最终可能具有不同的内部定义(有关详细信息,请参阅Conda Forge存储库中的此问题)。例如,在本例中,构建rjags.so是为了查找它链接到的库中的符号,但是它在Anaconda构建中找不到它。不幸的是,它链接到太多(检查与ldd rjags.so),让我找到具体是造成问题。

但是,您仍然有一些选项可以让rjags正常工作,而不是精确修复。在所有情况下,的解决方案都是优先考虑 conda-forge

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

如果在这个特定的env中实际上不需要rjags,那么使用您需要的包创建一个新的包。但是,在这样做时,要使conda-forge成为默认之上的优先级通道。

代码语言:javascript
复制
conda create -n rjags_env -c conda-forge r-rjags
conda activate rjags_env
conda config --env --add channels conda-forge

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

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

首先,将env导出到类似于YAML的

代码语言:javascript
复制
conda env export -n r-env --no-builds > rjags_env.yaml

接下来,编辑这个文件,以便通道部分读到:

代码语言:javascript
复制
name: rjags_env
channels:
  - conda-forge
  - defaults
dependencies:

最后,创建env的新版本

代码语言:javascript
复制
conda env create -f rjags_env.yaml -n rjags_env

附加说明

我还研究了如何在--update-deps中使用conda install标志,但这迫使env更新到Rv4.0.1,并破坏了r-coda安装。

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

https://stackoverflow.com/questions/62526717

复制
相关文章

相似问题

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