如何将 CRAN 包导出到 Conda yaml 文件?

How to export CRAN packages to Conda yaml file?

我需要导出包含多个包的 Conda R 环境。除了一个之外的所有内容都可以通过 Conda 频道获得,因此可以轻松添加。问题是包 BiDAG,它在 CRAN 上,但在 Conda 频道中 none。

当我 运行 install.packages("BiDAG") 从我想要导出的环境内部时,包被安装到正确的目录中。但是,conda env export > env.yml 无法识别它,因为它只跟踪由 conda 本身安装的包。

我试过使用

从 CRAN 构建
conda skeleton CRAN bidag
conda build r-bidag

但这会在 Bioconductor 提供的两个包(r-graph 和 r-rgraphviz)上崩溃,甚至通过 conda 渠道,但不再在 CRAN 上。因此无法识别它们并且构建失败。

有没有办法在 .yml 中使用这个 CRAN 包 BiDAG 导出 conda 环境?

供以后参考:这似乎是不可能的。更好的解决方案是使用像 Docker 或 Singularity 这样的容器系统,这就是我要做的。

在 Conda 环境中避免 install.packages

通常,在 Conda 管理的 R 环境中使用 install.packages 会使环境复杂化,我建议不要这样做。正如您所发现的,Conda 无法识别这些包,因此失去了 Conda 通过环境导出提供的可重现性。此外,install.packages 经常无法找到用于所有 Conda 包构建的共享库和构建堆栈。这可能会导致某些包出现编译、链接或其他共享库问题。

建筑r-bidag

Bioconductor 包都托管在 bioconda 频道上,并以 bioconductor- 为前缀,而不是 r-。因此,应该能够通过修改来自 conda skeletonmeta.yamlr-graphr-graphviz 替换为 bioconductor-graph 和 [=23] 来构建软件包=].然后用

构建包
conda build --override-channels -c conda-forge -c bioconda -c defaults r-bidag

您可能还需要 --R 参数来指定要构建的 R 版本。