我需要导出一个包含多个包的Conda R环境。除了一个之外,所有的都可以通过Conda通道获得,所以可以很容易地添加。问题出在BiDAG包上,它在CRAN上,但不在Conda通道上。
当我从想要导出的环境内部运行install.packages("BiDAG")时,包安装到了正确的目录中。然而,conda env export > env.yml无法识别它,因为它只跟踪由conda自己安装的包。
我尝试过用CRAN构建
conda skeleton CRAN bidag
conda build r-bidag但这在两个包(r-graph和r-rgraphviz)上崩溃,这两个包可以从Bioconductor获得,甚至可以通过conda通道获得,但不再在CRAN上。因此,它们不被识别,构建失败。
有没有办法在.yml中使用这个CRAN包BiDAG导出conda环境?
发布于 2020-12-17 03:14:47
避免在Conda环境中使用install.packages
通常,在Conda管理的R环境中使用install.packages会使环境变得复杂,我建议您不要这么做。正如您已经发现的,Conda无法识别这些包,因此失去了Conda通过环境导出提供的重现性。此外,install.packages通常难以定位共享库和用于所有Conda包构建的构建堆栈。这可能会导致一些包出现编译、链接或其他共享库问题。
构建r-bidag
Bioconductor软件包都托管在bioconda通道上,并以bioconductor-而不是r-作为前缀。因此,应该能够通过修改来自conda skeleton的meta.yaml来构建包,将r-graph和r-graphviz替换为bioconductor-graph和bioconductor-graphviz。然后使用以下命令构建包
conda build --override-channels -c conda-forge -c bioconda -c defaults r-bidag您可能还需要--R参数来指定要构建的R版本。
发布于 2020-12-16 23:40:48
供将来参考:这似乎是不可能的。一个更好的解决方案是使用容器系统,如Docker或Singularity,这就是我要做的。
https://stackoverflow.com/questions/65305195
复制相似问题