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检查兼容性的问题。