如何将yaml conda环境中的通道命令持久化?



我正在从myenv.yml创建conda环境。内容包括

channels:
- mychan
- defaults
- conda-forge
dependencies:
- matplotlib
- pandas
- myweirdpy
- exoticcondaforgelib

通道顺序很重要,但是我不能从我发现的少量文档中看出,带有通道部分的conda env create是否意味着首选通道顺序,而严格的通道顺序不是命令上的选项。似乎很多人使用conda create来创建一个空的环境,然后使用conda配置来执行严格的命令,然后使用conda env update来捕获yaml部分。在Conda environment.yaml中的Set the channel_priority中的一个答案中有一个例子。但我还是不太清楚这种行为。例如,这个答案在.condarc和yaml中具有通道优先级。如何解决这个问题?如果我使用conda-config严格设置通道优先级,它会做正确的事情吗?

理想情况下,如果我更新一个库或安装一些新的依赖项,我也希望尊重依赖项的顺序,所以我想我不介意为后代设置。condarc。对我来说,为用户简化这一点的理想方法是,如果有一种方法可以在yaml中设置通道,并严格遵守通道,并用于生成特定于环境的.condarc。

没有一个简单透明的机制来实现这一点。环境本地.condarc文件是一种很好的策略,对于用户来说可能是最简单的策略。否则,您将让它们在激活环境的情况下运行conda config --env命令,这实际上只是创建相同的.condarc

另一种方法可能是创建一个自定义包来设置这些配置选项,但这有缺点,有些人可能认为这是禁忌。也就是说,链接后脚本可能会操纵环境的本地.condarc以符合您想要的设置。然而,这并不能阻止用户手动更改它们,因此,即使安装了自定义包也不能保证环境处于包所要表示的状态。

最新更新