Anaconda 安装完成,在 bin 子目录下( $PREFIX/bin )可以看到该发行版本预装好的 conda、python、pip、jupyter,以及一些常用的工具。

Python环境管理

Anaconda 主要通过 conda 进行 python 的环境和包管理。Conda 的环境管理功能允许我们同时安装若干不同版本的 Python,并能自由切换。对于上述安装过程,假设我们采用的是 Python 3.6 对应的安装包,那么 Python 3.6 就是默认的环境(默认名字是 root,注意这个 root 不是超级管理员的意思)。

  • canda 创建一个新环境

conda create -n env_name  list of packages

# 创建一个 Python 2 的环境,同时安装 pandas 包
conda create -n py2 python=2.7 pandas

其中 -n 代表 name,env_name 是需要创建的环境名称,list of packages 则是列出在新环境中需要安装的工具包。canda 在安装包的过程会自动解决包的依赖,如上面的命令,canda 在新创建的 py2 环境中不仅安装了 pandas,还安装了 numpy 等一系列 packages 依赖。

  • conda 常用环境操作

# 创建一个名为 python27 的环境,指定 Python 版本是2.7(不用管是 2.7.x,conda 会为我们自动寻找 2.7.x 中的最新版本)
conda create --name python27 python=2.7

# 指定创建 python-2.7.13
conda create --name python27 python=2.7.13
 
# 安装好后,使用 activate 激活某个环境
activate python27           # for Windows
source activate python27    # for Linux & Mac
# 激活后,会发现 terminal 输入的地方多了 python27 的字样,实际上,此时系统做的事情就是把默认 3.6 环境从 PATH 中去除,再把 2.7 对应的命令加入 PATH
 
# 此时,再次输入
python --version
# 可以得到`Python 2.7.13 :: Anaconda, Inc.`,即系统已经切换到了 2.7.13 的环境
 
# 如果想返回默认的 python 3.6 环境(退出指定环境,返回默认),运行
deactivate python27          # for Windows
source deactivate python27   # for Linux & Mac
 
# 删除一个已有的环境
conda remove --name python27 --all

  • 环境导出与分享

当分享代码的时候,同时也需要将运行环境分享给大家,执行如下命令可以将当前环境下的 package 信息存入名为 environment 的 YAML 文件中。

# 显示所有的环境
conda env list(或者:conda info -e)

# 选择进入其中一个环境,root 表示进入默认环境
source activate root

# 保存当前环境信息
conda env export > environment.yaml

同样,当执行他人的代码时,也需要配置相应的环境。这时你可以用对方分享的 YAML 文件来创建一摸一样的运行环境。

conda env create -f environment.yaml

Python包管理

Anaconda 主要通过 conda 进行 python 的包管理,这部分功能与 pip 类似。

conda 的一些常用操作:

# 查看已安装的环境,当前被激活的环境会显示有一个星号或者括号
conda info --envs(或者 conda env list)

# 查看当前环境下已安装的包
conda list
 
# 查看某个指定环境的已安装包
conda list -n python27
 
# 查找某个 package (模糊查询)
conda search numpy
 
# 安装 package
conda install -n python27 numpy
# 如果不用 -n 指定环境名称,则被安装在当前活跃环境
# 也可以通过 -c 指定通过某个 channel 安装
 
# 更新 package
conda update -n python27 numpy
 
# 删除 package
conda remove -n python27 numpy

由于 conda 将 conda、python 等都视为 package,因此,完全可以使用 conda 来管理 conda 和 python 的版本,例如:

# 更新conda,保持conda最新
conda update conda
 
# 更新anaconda
conda update anaconda
 
# 更新python
conda update python
# 假设当前环境是 python 3.6, conda 会将 python 升级为 3.6.x 系列的当前最新版本

如果创建新的 python 环境,比如 2.7,运行 conda create -n python27 python=2.7 之后,conda 仅安装 python 2.7 相关的必须项,如 python, pip 等,如果希望该环境像默认环境那样,安装 anaconda 集合包,只需要:

# 进去环境后安装 anaconda 包集合
conda install anaconda
 
# 结合创建环境的命令,以上操作可以合并为
conda create -n python27 python=2.7 anaconda
# 也可以不用全部安装,根据需求安装自己需要的 package 即可

Conda 镜像

conda 的配置文件是 .condarc(一般保存在个人 home 目录下),该文件包含 conda 搜索包的来源(channels),代理以及环境目录等配置。默认情况下,.condarc 是不存在的,只有当用户第一运行 conda config 命令时才会生成。

Anaconda.org 的服务器在国外,安装 packages 有时候比较慢,因此我们可以在 conda 中加入清华 TUNA 镜像源中的 Anaconda 仓库镜像:

# 添加 Anaconda 的 TUNA 镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
# TUNA的 help 中镜像地址加有引号,需要去掉

这时候看到新增的镜像 url 已经添加到 .condarc

$ cat ~/.condarc
channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - defaults

最后,我们设置搜索时显示通道地址:

conda config --set show_channel_urls yes

例子:conda 安装 cnvkit

conda config --add channels defaults
conda config --add channels conda-forge
conda config --add channels bioconda
conda install cnvkit

根据提示,conda 会自动把 cnvkit 的依赖及 cnvkit 安装完成:

至此,你已跨入 Anaconda 的大门,接下来就可以去选择一个喜欢的 python 版本去分析了!

本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

Anaconda入门使用指南(二)的更多相关文章

  1. Anaconda入门使用指南

    打算学习 Python 来做数据分析的你,是不是在开始时就遇到各种麻烦呢? 到底该装 Python2 呢还是 Python3 ? 为什么安装 Python 时总是出错? 怎么安装工具包呢? 为什么提示 ...

  2. 致Python初学者:Anaconda入门使用指南

    http://python.jobbole.com/87522/ Anaconda使用总结 pasting

  3. elasticsearch.net search入门使用指南中文版(翻译)

    elasticsearch.net search入门使用指南中文版,elasticsearch.Net是一个非常底层且灵活的客户端,它不在意你如何的构建自己的请求和响应.它非常抽象,因此所有的elas ...

  4. elasticsearch.net search入门使用指南中文版

    原文:http://edu.dmeiyang.com/book/nestusing.html elasticsearch.net为什么会有两个客户端? Elasticsearch.Net是一个非常底层 ...

  5. WPF入门教程系列二十三——DataGrid示例(三)

    DataGrid的选择模式 默认情况下,DataGrid 的选择模式为“全行选择”,并且可以同时选择多行(如下图所示),我们可以通过SelectionMode 和SelectionUnit 属性来修改 ...

  6. WCF入门教程(二)如何创建WCF服务

    WCF入门教程(二)从零做起-创建WCF服务 通过最基本的操作看到最简单的WCF如何实现的.这是VS的SDK默认创建的样本 1.创建WCF服务库 2.看其生成结构 1)IService1.cs(协议) ...

  7. iOS开发-UI 从入门到精通(二)

    iOS开发-UI 从入门到精通(二)是对 iOS开发-UI 从入门到精通(一)知识点的巩固,主要以习题练习为主,增强实战经验,为以后做开发打下坚实的基础! ※开发环境和注意事项: 1.前期iOS-UI ...

  8. Docker入门教程(二)命令

    Docker入门教程(二)命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第二篇,介绍了Docker的基本命令以及命令的用法和功能. 在Docker ...

  9. 无废话ExtJs 入门教程十二[下拉列表联动:Combobox_Two]

    无废话ExtJs 入门教程十二[下拉列表联动:Combobox_Two] extjs技术交流,欢迎加群(201926085) 不管是几级下拉列表的联动实现本质上都是根据某个下拉列表的变化,去动态加载其 ...

  10. P6 EPPM R16.1安装与配置指南(二)

    P6 EPPM R16.1安装与配置指南(一) http://www.cnblogs.com/endv/p/5634620.html P6 EPPM R16.1安装与配置指南(二) 环境变量配置 新建 ...

随机推荐

  1. Redis 缓存雪崩 |击穿 |穿透 概念及解决方案

    一.雪崩 1.概念  指某一时间段,缓存集中过期失效,无数的请求绕开缓存,直接访问数据库. 2.解决方案 让redis数据永不过期,这种方式最可靠的.最安全的,但占用空间,内存消耗大,并且不能保持数据 ...

  2. 全局唯一ID的实现方案

    为什么需要保证唯一ID? 在单机服务架构中,数据库的每一个业务表的主键ID都是允许自增的,但是在分布式服务架构的分库分表的设计,使得多个库或者多个表存储了相同的业务表,如果没有一个全局的唯一ID设计方 ...

  3. 记一次 .NET 某企业 ERP网站系统 崩溃分析

    一:背景 1. 讲故事 前段时间收到了一个朋友的求助,说他的ERP网站系统会出现偶发性崩溃,找了好久也没找到是什么原因,让我帮忙看下,其实崩溃好说,用 procdump 自动抓一个就好,拿到 dump ...

  4. 基于express、node与mongodb写后端接口

    1.首先运行mongodb,建立一个数据库.(前提是你的电脑已经装了mongodb) 先打开一个命令窗口打开mongodb cd /usr/localcd mongodb/bin./mongod -- ...

  5. 开源不到 48 小时获 35k star 的推荐算法「GitHub 热点速览」

    本周的热点除了 GPT 各类衍生品之外,还多了一个被马斯克预告过.在愚人节开源出来的推特推荐算法,开源不到 2 天就有了 35k+ 的 star,有意思的是,除了推荐算法本身之外,阅读源码的工程师们甚 ...

  6. 图与网络分析—R实现(二)

    图与网络 网络在各种实际背景问题中以各种各样的形式存在.交通.电子和通讯网络遍及我们日常生活的各个方面,网络规划也广泛用于解决不同领域中的各种问题,如生产.分配.项目计划.厂址选择.资源管理和财务策划 ...

  7. 【Diary】CSP-J 2019 游记

    大废话游记. CSP-J1 Day-1 写13年的初赛题.感觉挺简单.但是问题求解第二问数数数错了,加上各种sb错误,只写了八十几分... 然后跑去机房问,那个相同球放相同袋子的题有没有数学做法. 没 ...

  8. MQTT(EMQX) - SpringBoot 整合MQTT 连接池 Demo - 附源代码 + 在线客服聊天架构图

    MQTT(EMQX) - Linux CentOS Docker 安装 MQTT 概述 MQTT (Message Queue Telemetry Transport) 是一个轻量级传输协议,它被设计 ...

  9. count(*) count(1) count(字段)效率问题

    COUNT(字段名)和COUNT(*)的查询结果有什么不同? COUNT(1)和COUNT(*)之间的效率哪个更高? 你知道答案吗?很多人都认为COUNT(1)比COUNT(*)效率高,真的是这样吗? ...

  10. 基于Java开发的全文检索、知识图谱、工作流审批机制的知识库

    一.项目介绍 一款全源码,可二开,可基于云部署.私有部署的企业级知识库云平台,应用在需要进行常用文档整理.分类.归集.检索的地方,适合知识密集型单位/历史文档丰富的单位,或者大型企业.集团. 为什么建 ...