区分conda, anaconda, miniconda
anaconda相当于conda+python+pip+一堆python科学计算常用包(numpy, scipy, matplotlib等)
miniconda相当于conda+python+pip,轻量级。
conda是通用的包管理器,能装pip包(例如numpy),也能装其他语言的软件包(例如ninja, cmake).
如果你用Python,做深度学习,那么强烈建议你使用miniconda/anaconda而不是系统自带Python/pip
,虽然硬盘空间可能多消耗一些,但往往能节省在环境配置上的时间开销。
本文的各种命令可以在conda官方的文档中找到:
Conda User guide
。
不过,官网文档内容过于详实,简直就是字典,我是看不下去的..
conda版本
conda -V
conda --version
创建虚拟环境
conda create -n env_name python=x.y
e.g. 创建python3.5的虚拟环境:
conda create -n py35 python=3.5
删除虚拟环境
conda remove --name env_name --all
重命名虚拟环境
没法直接重命名虚拟环境,只能很naive的从原有环境clone,然后删掉原有环境(或者用下面的“分享环境”的做法,不过估计需要联网速度更慢):
conda create --name new_name --clone old_name
conda remove --name old_name --all
列出虚拟环境
conda env list
conda info --envs
#也可以用缩写形式:
conda info -e
切换/激活虚拟环境
conda activate env_name
e.g. 激活py35环境:
conda activate py35
退出当前虚拟环境
conda deactivate
导出虚拟环境
导出到yml文件,相当于pip用的requirements.txt的升级版
conda env export > environment.yml
注意:如果导出的environment.yml开头几行显示的channel是anaconda官方(https://repo.anaconda.com/pkgs/main
),可以考虑换成tuna的镜像通道(https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
)来加速,e.g.
name: base
channels:
- https://repo.anaconda.com/pkgs/main
- defaults
dependencies:
- asn1crypto=0.24.0=py37_0
- attrs=19.3.0=py_0
- backcall=0.1.0=py37_0
name: base
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- defaults
dependencies:
- asn1crypto=0.24.0=py37_0
- attrs=19.3.0=py_0
- backcall=0.1.0=py37_0
使用yml导入创建虚拟环境
conda env create -n env_name -f environment.yml
复制虚拟环境
conda create -n new_env_name --clone env_name
查看某个环境的位置
默认的conda虚拟环境叫做"base",它提供的python在/home/zz/soft/miniconda
。
base环境之外的虚拟环境,例如py35
,在/home/zz/soft/miniconda3/envs/py35/
。
在某些开源项目的编译配置环境(例如OpenCV等),可以指定特定版本的python,则需要到/home/zz/soft/miniconda3/envs/py35/
这样的位置下找。
列出软件包
包的基本信息
显示当前环境的所有包的基本信息
conda list
显示指定虚拟环境的所有包的基本信息
conda list -n env_name
区分显示conda和pip包的信息
当前环境的:
conda env export
输出结果中- pip
开始列出的是pip包列表。
conda env export -n env_name
安装软件包
在当前虚拟环境中安装软件包
conda install pkg_name
e.g. 安装cmake(cmake不是一个pypi包,但可以通过conda下载安装,并且如果你在condarc中配置了国内镜像,下载起来会非常快,比自己手动去cmake官网下载快很多):
conda install cmake
在指定虚拟环境中安装软件包
conda install --name env_name pkg_name
从指定channel下载安装
以下载pytorch包举例:
conda install --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ pytorch
或者用缩写的参数-c
替代--channels
,用~/.condarc
中配置的名为pytorch的channel
conda install -c pytorch pytorch
删除软件包
conda remove pkg_name
conda remove --name env_name pkg_name
查找软件包
conda search pkg_name
conda配置
.condarc
Linux/Mac: ~/.condarc
Windows: c:/Users/xxx/.condarc
在国内使用tuna的conda镜像。个人感觉这个.condarc中配置的是各个channel,一方面是管理不同版本的包(例如pytorch这个channe),另一方面可以切换镜像,用来加速。
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pip.conf
Linux/Mac: ~/.pip/pip.conf
Windows: C:/Users/xxx/pip/pip.ini
除了配置conda镜像,还需要配置pip镜像。因为很多python包还是需要通过pip而不是conda安装(conda里没有相应的包,只有pypi里有),此时pip使用国内镜像来加速,需要配置pip.conf
,例如:
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
bash/zsh自动加载
以前都是安装miniconda/anaconda时选择"yes",自动追加配置到~/.bashrc
,然后手动复制到~/.zshrc
(我默认用的zsh替代了bash作为解释器)。其实可以更简单:
conda init zsh
进入bash/zsh不自动activate base env
conda config --set auto_activate_base false
conda实践:安装python2的pip无法安装的包
由于pip官方的不作为(辣鸡pip),现如今python2对应的pip几乎没法装pypi包了,一旦安装就会失败,提示你说:需要至少python3.5的环境。老子的python2为什么不给用了?垃圾pip。
RuntimeError: Python version >= 3.5 required
解决办法:用conda安装!例如:
conda install numpy