conda:一个当下最流行的Python虚拟环境工具( 二 )


conda install --prefix=/tmp/miniconda3/pyenv/py36 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ pytorch torchvision cuda91 -c pytorchConda不仅仅可以用conda install安装软件,同时也可以继续用pip,就和普通Python环境下操作没太有什么区别:
python -m pip install xxx

并不是所有的软件都可以用pip安装 。最佳实践是只在conda找不到包时,才用pip安装 。不要使用user参数,避免权限问题 。
  • 退出
直接运行conda deactivate,然后可以通过which python来确认 。
Conda环境导出与恢复
Conda支持直接导出环境,命令如下:
conda env export > env.yml这里,推荐在熟悉的情况下,去掉二级依赖库(依赖的依赖) 。一方面减少文件内容,第二有可能二级依赖在后面会被取消 。
环境恢复使用命令:
conda env create -n revtest -f=/tmp/env.yml这里比较关键是导出的yaml文件,通过编译器查看可知,其是一个标准的yaml文件 。里面主要包括:
name: 环境名字channels: - 频道urls ……dependencies: - 软件名=版本号=编译环境prefix:环境路径
  • Conda环境包含pip依赖
私信小编01 领取完整项目!上面的环境依赖都是conda自己就可以安装,如果所需要的依赖正好没有conda资源怎么办?其实,conda早就可以直接在环境里使用pip依赖:
name: hyperparam_examplechannels: - defaultsdependencies: - python=3.6 - numpy=1.14.3 - pandas=0.22.0 - scikit-learn=0.19.1 - matplotlib=2.2.2 - tensorflow-mkl==1.13.1 - keras==2.2.2 - pip: - mlflow>=1.0 - Gpy==1.9.2 - GpyOpt==1.2.5 - pyDOE==0.3.8 - hyperopt==0.1这个环境文件参考自mlflow项目(https://github.com/mlflow/mlflow/blob/master/examples/hyperparam/conda.yaml),从这里我们就可以看到两点:
  • 利用conda就可以同时管理好conda和pip依赖
  • conda 的环境管理,已经成为一种标准,被mlflow这样的项目所使用 。
那么最后一个问题,conda和pip到底有什么不同?
  • conda还负责依赖检查和维护 。Conda不仅仅安装Python库这么简单,他还能把Python库需要的外部依赖也同时安装进来,并且维护每个软件库对应的各种依赖版本关系,每次conda安装都要进行比较复杂的处理来维护好依赖关系 。
  • conda这个包管理命令不仅仅可以用在Python上,还可以用来管理R等其他语言 。
  • 不能提供egg或whl时,pip只能从源代码编译 。而conda install一直都是安装编译好的二进制 。
  • conda默认就支持虚拟环境;而pip是靠virtualenv或venv来支持
  • conda是Python的外部工具
  • conda的托管网站是Anaconda,而pip的托管网站是PyPI(https://pypi.org/)

【conda:一个当下最流行的Python虚拟环境工具】


推荐阅读