使用yaml文件创建环境时是否可以将
channel_priority
设置为strict
?例如:
name: my_environment
channels:
- conda-forge
dependencies:
- python
- geopandas
- rasterio
一个额外的注意事项是给定包的指定频道不需要在
channels
部分中列出。我发现这更安全,因为它没有从意外渠道(重新)安装某些其他软件包的风险。
所以,例如:
channels:
- defaults
dependencies:
- python =3.8
- ...
# specifically from conda-forge (but only those):
- conda-forge::nbsphinx
代替:
# NO!
channels:
- defaults
- conda-forge
dependencies:
- python =3.8
- ...
- conda-forge::nbsphinx
重要的是,这似乎只安装conda-forge
中指定的软件包,并且它不会尝试(重新)安装那些依赖关系图中但已经可用的软件包的
conda-forge
版本(也许有一个稍微不那么前沿的版本)来自pkgs/main
。。
解决方法是为每个包指定通道:
name: my_environment
channels:
- conda-forge
dependencies:
- conda-forge::python
- conda-forge::geopandas
- conda-forge::rasterio
conda create new_env
conda activate new_env
conda config --env --add channels conda-forge
conda config --env --set channel_priority strict
conda env update --name new_env --file env.yml
注意:如果使用 .txt 规范文件而不是 .yml,则将最后一行替换为
conda install --name new_env --file env.txt
参考文档:https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#id13
方法。但是,我可以通过指定显式构建号来帮助创建环境。 例如,不要要求:
afakelib=12.7.5.75
我会检查内部版本号并提供它(这会减少选择坏版本的机会)
afakelib=12.7.5.75-0