Anaconda - conda 常用命令

Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项. 平时可以使用anaconda基本代替原本的python使用,它的包管理比较简单方便.管理虚拟环境也十分的方便好用,给大家大力推荐(真的是神器,你会发现用它甚至连opencv,pytorch,caffe都可以直接conda install 安装,十分简单.)

本文的绝大多数内容来源于官方网站,https://conda.io/docs/user-guide/tasks/index.html
感兴趣的同学可以自己点击查看,不过这个网站是英文的,我这里很多工作相当于是翻译了这个网站的一些内容啦~
不过相对于原本网站,我省略了一些基本用不到的功能,并将常用功能位置提前了,内容上可能比较多,需要查询指定功能的可以使用ctrl+f查询关键字~
[TOC]

关于安装Anaconda

关于Anaconda在windows上的安装可以参考我的这篇文章:https://blog.csdn.net/tuzixini/article/details/78841243

安装完成之后可以使用如下命令添加清华镜像源,加速包的安装下载.
注意最后的pytorch的通道,linux和win使用的通道不同,可以按照自己的情况添加指定的通道.

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
conda config --add channels 
# for pytorch 
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
# for legacy win-64
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/peterjc123/

详细情况可以参考:https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/

本文的绝大多数内容来源于官方网站,https://conda.io/docs/user-guide/tasks/index.html
感兴趣的同学可以自己点击查看,不过这个网站是英文的,我这里很多工作相当于是翻译了这个网站的一些内容啦~

关于conda管理

查看conda版本

conda --version
# or
conda -V

查看包括版本的更多信息

conda info

更新conda

conda update conda

关于环境管理(虚拟环境)

查看conda环境管理命令帮助信息

conda create --help

新建虚拟环境

# envname 指代你新建的环境的名称
conda create --name envname
# 后面会让你确认,输入y回车就好

创建出来的虚拟环境所在的位置为conda路径下的env/文件下,,默认创建和当前python版本一致的环境.

删除虚拟环境

conda remove --name envname --all

创建指定python版本,指定包的虚拟环境

# 指定python版本
conda create -n envname python=3.4
# 指定包
conda create -n envname scipy
# 指定包版本
conda create -n envname scipy=0.15.0
# 指定python版本,以及多个包
conda create -n envname python=3.4 scipy=0.15.0 astroib numpy

给虚拟环境安装包

# 首先需要创建名称为envname的虚拟环境
conda install -n envname scipy
# 指定包版本
conda install -n envname scipy=0.15.0

如果想要在每个新建的环境中默认安装指定的包,可以修改 .condarc 配置文件,指定每次新建环境默认安装的包.
如果在某个特定的虚拟环境中不需要安装默认的包,可以使用如下命令新建虚拟环境:

conda create --no-default-packages -n envname python

从 environment.yml文件新建环境

conda env create -f environment.yml
# yml 文件的第一行设定了新环境的名称,具体情况可以查看以下网址
# https://conda.io/docs/user-guide/tasks/manage-environments.html#create-env-file-manually

查看当前环境安装的包

conda list

克隆一个环境

# clone_env 代指克隆得到的新环境的名称
# envname 代指被克隆的环境的名称
conda create --name clone_env --clone envname

查看conda环境信息

conda info --envs

构建相同的conda环境(不通过克隆的方法)

# 查看包信息
conda list --explicit
# 导出包信息到当前目录, spec-file.txt为导出文件名称,可以自行修改名称
conda list --explicit > spec-file.txt
# 使用包信息文件建立和之前相同的环境
conda create --name newenv --file spec-file.txt
# 使用包信息文件向一个已经存在的环境中安装指定包
conda install --name newenv --file spec-file.txt

激活新环境

# for windows
activate envname
# for liunx and MACOS 
source activate envname

退出当前环境

# for windows
deactivate
# for linux and MACOS
source deactivate
# conda 退出环境的原理是从你的环境变量中删除当前环境的路径

查看当前环境
通常情况下,当前环境的名称会放在()或者[]中然后展示在你命令行的开头处,如下

(envname)$

如果没有展示,可以使用如下命令进行查看

conda info --envs

所有的环境会被展示,你当前所处的环境会被高亮,并且带有*号

关闭显示环境名称功能(默认开启)

conda config --set changeps1 false

开启显示环境名称功能

conda config --set changeps1 true

以列表形式展现所有环境

conda info --envs 
# OR
conda env list

查看环境中包的列表

# 查看未激活的环境的包列表
conda list -n envname
# 查看激活的当前环境的包列表
conda list
# 参看某一环境中是否安装指定包
conda list -n envname numpy

在环境中使用pip

conda install -n envname pip
source activate envname
pip <pip_subcommand>

保存环境变量

分享环境
这里使用生成 environment.yml文件实现conda环境的分享
首先激活环境
win:

activate envname

Linux:

source activate envname

然后使用如下命令将当前激活的环境导出为文件 environment.yml

conda env export > environment.yml

你可以自己手动写一个yml文件
一个简单的版本:

name: stats
dependencies:
  - numpy
  - pandas

一个复杂的版本:

name: stats2
channels:
  - javascript
dependencies:
  - python=3.4   # or 2.7
  - bokeh=0.9.2
  - numpy=1.9.*
  - nodejs=0.10.*
  - flask
  - pip:
    - Flask-Testing

你可以使用如下方法排除默认通道

 channels:
  - javascript
  - nodefaults

通道管理

# 将通道 new_channel 添加到通道列表顶端,优先级最高
conda config --add channels new_channel
# 将通道 new_channel 添加到通道列表顶端,优先级最高,和上一句效果一致
conda config --prepend channels new_channel
# 将通道 new_channel 添加到通道列表底端,优先级最低
conda config --append channels new_channel
# 展示通道情况
conda config --set show_channel_urls yes
# 要使conda使用旧方法并在任何列出的通道中安装最新版本的软件包
conda config --set channel_priority false

建立自定义通道

通道是conda查找包的路径。 使用和管理自定义渠道的最简单方法是在Anaconda.org上使用私有或公共存储库,以前称为Binstar.org。 如果您将Anaconda.org存储库指定为私有,那么只有您和您授予访问权限的人才能访问您的私有存储库。
如果您不希望将软件包上传到Internet,则可以通过Web服务器或使用file:// URL本地构建自定义存储库。
想要建立自定义通道,可以使用如下步骤:
1.如果你没有使用过 conda build ,使用如下命令安装 conda build

conda install conda-build

2.按照如下方式组织您希望服务的平台的子目录中的所有包:

 channel/
linux-64/
 package-1.0-0.tar.bz2
linux-32/
 package-1.0-0.tar.bz2
osx-64/
 package-1.0-0.tar.bz2
win-64/
 package-1.0-0.tar.bz2
win-32/
 package-1.0-0.tar.bz2

3.为各个平台运行 conda index 命令

conda index channel/linux-64 channel/osx-64 channel/linux-32 channel/win-64 channel/win-32

conda index 命令会在每个目录下建立一个 repodata.json 文件,conda 使用该文件来获取通道中所有包的元数据
注意:每次你新增或改动通道中的包,你必须重新运行conda index命令来更新

4.测试自定义频道,请使用Web服务器或使用file:// url为频道目录提供自定义频道。通过向自定义通道发送搜索命令进行测试。
举例:如果你想要测试/opt/channel/linux-64/ 目录下的自定义通道,使用如下命令:

conda search -c file://opt/channel/ --override-channels

注意:URL中不需要指定平台,codna会自动检测并添加平台
注意:选项 –override-channels 确保了conda只搜索你指定的通道,不会去搜索默认通道或者其他任何你加入的通道.
如果你正确的设置了你的私人仓库,你会得到如下输出:

Fetching package metadata: . . . .

后面会跟随输出找到的conda包,这说明你自己的通道建立完成

包管理

搜索包

# 在所有添加的仓库以及默认仓库中搜索包 numpy
conda search numpy
# 在默认仓库中搜索包 scipy
conda search --override-channels --channel defaults scipy
# 在指定通道/仓库中搜索包iminuit
conda search --override-channels --channel http://conda.anaconda.org/mutirri iminuit

安装包

# 向当前环境安装包 scipy
conda install scipy
# 向当前环境安装包 scipy 并指定版本
conda install scipy=0.15.0
# 向当前环境安装多个包
conda install scipy curl
# 向当前环境安装多个包,并指定包版本
conda install scipy=0.15.0 curl=7.26.0
# 向当前环境安装多个包,并指定包版本与python版本,一般情况下不用指定python版本
conda install scipy=0.15.0 curl=7.26.0 -n py34_env
# 向指定虚拟环境中安装指定包
conda install --name myenv scipy

从codna默认通道/官方通道安装包
1.使用浏览器访问 http://anaconda.org
2.以安装包bottleneck为例,在左上角的搜索框中输入bottleneck进行搜索
3.找到你想要的包,点击包名,查看详情页
详情页会展示包来源的通道的名称,在这个例子中通道名称为pandas
4.获取了通道名称后,使用conda install -c参数指定通道安装包,代码如下

conda install -c pandas bottleneck

5.使用如下命令检查包是否安装

conda list

安装非conda包/conda中使用pip
首先检查环境变量,确保使用的pip是当前conda环境中的pip

# 可以使用如下命令安装pip到当前虚拟环境
conda install pip
# 使用pip安装numpy
pip install numpy

查看所有安装的包

# 查看当前换件中安装的所有包
conda list
# 查看指定虚拟环境中安装的所有包
conda list -n envname

更新环境

# 更新指定包
conda update unmpy
# 更新所有包
conda update
# 更新python
conda update python
# 更新conda本身
conda update conda
# 更新anaconda元数据
conda update conda
conda update anaconda

这些命令后面可能会让你选择是否执行,y or n,根据自己需要选择

阻止包更新
可以通过在当前环境下的conda-meta文件夹下新建一个名为pinned的文件,并在文件中写入想要阻止更新的包信息来阻止相关包的更新,例如文件内容如下

numpy 1.7.*
scipy ==0.14.2

在这个pinned文件存在的情况下,使用conda update numpy命令会把numpy保持在1.7.1版本(如果原本是1.7下的任意版本,则保留不变),使用conda install scipy=0.15.0命令将会报错.
使用 –no-pin 命令可以在当前命令中解除对包版本的限制

# 该命令将无视对numpy包版本的限制,更新numpy
conda update numpy --no-pin
# 但是后面如果再次使用了如下的普通更新命令(不带--no-pin的更新命令),会导致numpy被重新滚回到指定版本
conda update

删除包

# 删除当前环境中的scipy包
conda remove scipy
# 删除当前环境中的多个包
conda remove scipy curl
# 删除指定环境中的指定包
conda remove -n myenv scipy

创建包

Python管理

查找可以安装的python

# 查找所有名称包含python的包
conda search python
# 查找全名为python的包
conda search --full-name python

安装不同版本的Python
在不影响当前版本的情况下,新建环境并安装不同版本的python
新建一个Python版本为3.6 名称为 py36 的环境

conda create -n py36 python=3.6 anaconda

注:将py36替换为您要创建的环境的名称。 anaconda是元数据包,包含所有包含Anaconda发行版的Python包。 python = 3.6是您要在此新环境中安装的软件包和版本。 这可以是任何包,例如numpy = 1.7,或多个包。
新建一个Python版本为2.7 名称为 py27 的环境

conda create -n py27 python=2.7 anaconda

然后激活想要使用的环境即可

更新Python

# 普通的更新python
conda update python
# 将python更新到另外一个版本/安装指定版本的python
conda install python=3.6

配合Travis CI使用conda

查看命令行帮助

未完待续

  • 16
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值