跳转至

1. conda 环境管理#

conda的主要作用有如下两个:

  • 包管理

Anaconda 安装,conda包管理器与pip类似,不同之处是可用的包以数据科学包为主,而pip适合一般用途。它也可以安装非Python 的包。它是支持任何软件的包管理器。

  • 虚拟环境管理器

它类似于另外两个很流行的环境管理器,即 virtualenv 和 pyenv
脚本和程序使用的默认 Python 是 Anaconda 附带的 Python。

可以安装完整版: https://www.anaconda.com/distribution/#download-section
也可以安装精简版miniconda: https://conda.io/miniconda.html

# 安装
wget -c https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
sh Miniconda3-latest-Linux-x86_64.sh

包管理-常用命令#

conda list  #查看安装的内容
conda upgrade --all   #初次下载安装好后,建议更新所有包

安装包

conda install xxx
conda install numpy=1.10   #指定包的版本

conda remove package
conda upgrade --all
模糊查询相关包
conda search search_term

环境管理#

默认的环境名字叫base

通过conda env list可以列出你创建的所有环境

创建环境

conda create -n env_name list of packages
eg. conda create -n my_env numpy

conda create -n py3 python=3
conda create -n py2 python=2

#进入环境
source activate my_env
#离开环境
source deactivate

删除环境

conda env remove -n env_name

conda环境清理

conda clean -p      //删除没有用的包
conda clean -t      //tar打包
conda clean -y -all //删除所有的安装包及cache

其他#

共享环境:将自己的工作环境保存下来给别人共享

#进入到你的环境中
source activate base
conda env export > environment.yaml

# 通过环境文件创建环境
conda env create -f environment.yaml

注意:若导出base环境,则在目标机上会提示已存在(而且base环境无法删除)。所以要想导出base,最好先复制一下,再导出复制品:
conda create -n new_name --clone base
再导出new_name环境即可。必要的话再在原机删除复制环境:
conda remove -n new_name --all

在用的时候发现有些module还是未安装,上网找了下原因,原来以上只会导出conda命令直接安装的包,而我的包大多是用pip安装在Anaconda的lib和site-package里了。因此还要用导出pip的方法:

pip导出安装的库到27.txt:

pip freeze > 27.txt
pip导入27.txt中列出的库到新机:

更改下载源,加速下载速度#

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes

或者是更改配置文件 ~/.condarc

channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
show_channel_urls: true

conda install 与pip install的区别#

pip list和conda list列表却不一致,conda数量 > pip
conda 安装包路径是 xxxxx\Anaconda3\pkgs
pip 安装包路径在虚拟环境下是 xxxx\Anaconda3\envs\a_conda_env\Lib\site-packages
所以当前环境下pip list只列举出当前包list
此处需要留意如果使用conda install 多个环境时,对于同一个包只需要安装一次。有conda集中管理。
但是如果使用pip因为每个环境安装使用的pip在不同的路径下,故会重复安装,而包会从缓存中取。