【1】模块管理-3-包管理和环境管理--conda

conda: 一个工具,用于包管理和环境管理

一、简介

  • 包管理与pip类似,管理Python第三方库
  • 环境管理能够允许用户使用不同版本Python,并能灵活切换

1.anaconda:

一个集合,包括conda、某版本Python、一批第三方库等 conda将工具、第三方库、Python版本、conda都当作包,同等对待

conda ‐‐version 获取conda版本 执行 conda update conda 升级conda

Anaconda官网 https://www.continuum.io/ Anaconda 下载地址: https://www.continuum.io/downloads Anaconda是一个集成各类Python工具的集成平台

2.bioconda

生物信息分析相关的工具都能在这找到! https://bioconda.github.io/

3.minicoda

下载Miniconda https://conda.io/miniconda.html

Mac 下载的地址:https://repo.continuum.io/miniconda/Miniconda2-latest-MacOSX-x86_64.sh

bash Miniconda2-latest-MacOSX-x86_64.sh

安装完毕后可以通过conda list 查看conda中有多少程序

二、环境管理:

查看当前系统下的环境

conda info -e   
# conda environments:
#
qiime1                   /sam/anBank/lib/miniconda2/envs/qiime1
root                  *  /sam/anBank/lib/miniconda2

创建新的环境

# 指定python版本为2.7,注意至少需要指定python版本或者要安装的包# 后一种情况下,自动安装最新python版本
conda create -n env_name python=2.7
# 同时安装必要的包
conda create -n env_name numpy matplotlib python=2.7

环境切换

# 切换到新环境# linux/Mac下需要使用source activate env_name
activate env_name
#退出环境,也可以使用`activate root`切回root环境
deactivate env_name

移除环境

conda remove -n env_name --all

三、包管理

给某个特定环境安装package有两个选择,一是切换到该环境下直接安装,二是安装时指定环境参数-n

activate env_nameconda install pandas
# 安装anaconda发行版中所有的包
conda install anaconda
conda install -n env_name pandas

查看已经安装的package

conda list
# 指定查看某环境下安装的package
conda list -n env_name

查找包

conda search pyqtgraph

更新包

conda update numpy
conda update anaconda

卸载包

conda remove numpy

四、具体事例

1、minconda安装管理qiime

建立channels

安装玩conda以后,需要添加bioconda 等channel(需要按以下的顺序来安装,确保bioconda是最高的优先级别) conda-forge channel包含许多不在一般包里的chanel. The r channel is only included due to backward compatibility. It is not mandatory, but without r-packages compiled against R 3.3.1 might not work.

(conda config --add channels r)
conda config --add channels defaults
conda config --add channels conda-forge
conda config --add channels bioconda

通过conda来安装qiime

conda create -n qiime1 python=2.7 qiime matplotlib=1.4.3 mock nose -c bioconda
Activate qiime1并测试是否成功
source activate qiime1
print_qiime_config.py -t

每次需要用qiime1的时候,可以

source activate qiime1

退出虚拟环境

source deactivate

删除qiiime1

conda remove --name qiime1 --all

五、其他的小技巧

1.简化启动condata的流程

vim ~/.bash_profile
alias activate="source /home/zgong/bcbio/test-v2/share/anaconda/bin/activate root"
alias deactivate="source /home/zgong/bcbio/test-v2/share/anaconda/bin/deactivate"

2.设置国内镜像

CondaError: ChunkedEncodingError(ProtocolError('Connection broken: error("(54, \'ECONNRESET\')",)', error("(54, 'ECONNRESET')",)),)sf

解决办法:

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

如果命令行方法添加不上,可以在用户目录下的.condarc中添加https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/: 如果没有该文件可以直接创建,Windows为C://Users/username/.condarc,Linux/Mac为~/.condarc 结果如下:

channels:
 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ 
 - defaults
show_channel_urls: yes

3.64位系统和root环境下指定安装32位

vnpy在window系统下使用的python版本和package都是32位的,但除非下载anaconda时就下载32位版本,现在大多数系统都是64位了吧,我装的也是64位,那么用conda安装时默认64位,stackoverflow了发现解决方案,安装前设置使用32位:

# 设置32位set CONDA_FORCE_32BIT=1
conda create -n env_name python=2.7
conda install numpy pandas
# 切回系统默认set CONDA_FORCE_32BIT=

4.

conda update anaconda
Fetching package metadata ...

CondaHTTPError: HTTP None None
for url 

An HTTP error occurred when trying to retrieve this URL.
ConnectionError(MaxRetryError('HTTPSConnectionPool(host=\'repo.continuum.io\', p
ort=443): Max retries exceeded with url: /pkgs/free/win-64/repodata.json.bz2 (Ca
used by ReadTimeoutError("HTTPSConnectionPool(host=\'repo.continuum.io\', port=4
43): Read timed out. (read timeout=6.1)",))',),)

解决办法:

conda config --show

add_anaconda_token: True
add_pip_as_python_dependency: True
allow_softlinks: True
always_copy: False
always_yes: False
auto_update_conda: True
binstar_upload: None
changeps1: True
channel_alias: https://conda.anaconda.org
channel_priority: True
channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - defaults
client_tls_cert:
client_tls_cert_key:
create_default_packages: []
debug: False
default_channels:
  - https://repo.continuum.io/pkgs/free
  - https://repo.continuum.io/pkgs/pro
  - https://repo.continuum.io/pkgs/msys2
disallow: []
envs_dirs:
  - C:\Users\Tales Yuan\Anaconda3\envs
json: False
offline: False
proxy_servers: {}
quiet: False
shortcuts: True
show_channel_urls: True
ssl_verify: True
track_features: []
update_dependencies: True
use_pip: True
verbosity: 0

conda config –remove channels defaults

仔细看了一下之后,问题只可能是出在default channel上面。于是索性删掉channels下面的 -defaults一行,果然更新成功了。 所以说出现更新错误的原因是某运营商的网络这几天把repo.continuum.io给墙掉了。 真是日了狗了。

我的情况跟这个有点不一样,是因为bioconda被墙了,所以呢,所以呢,我也木有办法呀。。因为qiime的channel是biopython呀。

参考资料:

北京理工大学 嵩天老师

https://github.com/conda/conda/issues/3945

https://bioconda.github.io/

https://conda.io/docs/install/quick.html

https://zhuanlan.zhihu.com/p/22678445

http://talesyuan.blog.163.com/blog/static/920046082016112102643429/

个人公众号,比较懒,很少更新,可以在上面提问题:

更多精彩,请移步公众号阅读:

Sam avatar
About Sam
专注生物信息 专注转化医学