Anaconda channel 配置笔记

本文总结了Anaconda channel的配置,适用于Windows/MacOS/Linux等操作系统。

conda channel的配置

默认的conda channel是defaults,但这个channel的代码包不全。我的建议使用conda-forge channel,并设置严格优先使用conda-forge,因为这不同channel的包不完全兼容。我之前通过conda-forge channel安装geopandas时候,由于没有设置严格优先使用conda-forge,conda使用了defaults channel安装了libgdal(这是geopandas的依赖包之一),导致geopandas的安装一直不成功。

conda-forge的优势是什么?这个channel有强大的社区支持,提供了大多数安装包,并且更新及时。网址是:

https://conda-forge.org/docs/index.html

如何添加conda-forge channel并设置优先级?

 

1. 创建.condarc文件。这是conda channel的配置文件,在安装conda之后并不会生成这个文件。在terminal中使用conda config指令可以创建该文件

conda config

2. 查看现在的channel状态和优先级

conda config --get channels

3. 添加conda-forge channel并设置为最高优先级

conda config --add channels conda-forge

4. 再次查看channel状态和优先级

conda config --get channels
# it should be the following:
# --add channels 'defaults'   # lowest priority
# --add channels 'conda-forge'   # highest priority

5. 激活某个环境,在环境中设置channel的严格优先。注,如果该环境中已经安装了若干库,则需要先更新所有的库以保证大多数库从conda-forge下载,以保持库的一致性。

# activate my environment
conda activate my_env
# update all packages if needed
conda update --all
# set channel priority as strict
conda config --set channel_priority strict

如果在执行set channel_priority strict之后,conda提示某些库不一致(inconsistencies),则需要撤销strict,重新执行update --all,再设置channel priority strict。

6. 如何查看.condarc文件的位置和内容?

conda info

执行conda info,会看到某一行显示user config files,这是.condarc的文件路径。

【2021-03-23更新】

说说conda install的常见问题:在已有环境中安装新的库,conda要求检查已有环境的兼容性,时间很长,而且很可能最后失败。显示信息是:

Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: \
Found conflicts! Looking for incompatible packages.

查阅网站,发现这是conda系统的本身问题,没有好的解决方法。

https://github.com/conda/conda/issues/9367

https://stackoverflow.com/questions/57518050/conda-install-and-update-do-not-work-also-solving-environment-get-errors

我尝试了很多人赞同的方法,比如用conda的老版本,或者先更新所有的已有代码库,都无法解决问题。

conda update --all

最终找到的不完美解决方法是:改用pip安装新的包。

采用pip方法也有问题。pip和conda不完全兼容,有时候会报错。只能是碰运气,先用pip安装,看看能不能运行。如果不行,再想其他方法。

比如我在某个conda环境里(python 3.7),安装tensorflow 1.13,成功方法是

pip install tensorflow==1.13.0rc1

https://pypi.org/project/tensorflow/1.13.0rc1/

备注:pip install tensorflow==1.13.0不成功。缺少具体的版本信息。

另外,受到这篇文章的启发(知乎回答),在配置新的conda环境时,可以用conda创建环境,尽可能使用pip安装代码包,如果某个代码包在pip上不提供,再用conda install。这样可以尽可能避开conda检查兼容性的问题。

 
posted @ 2022-04-29 18:35  羊大葱  阅读(5761)  评论(0编辑  收藏  举报