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

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

安装软件之前,可以先在上面找找,有没有合适版本的额软件 https://anaconda.org/bioconda

一、简介

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

1.1 anaconda

Anaconda是一个集成各类Python工具的集成平台

  • 一个集合,包括conda、某版本Python、一批第三方库等

  • conda将工具、第三方库、Python版本、conda都当作包,同等对待

  • Anaconda官网: https://www.continuum.io/

  • Anaconda 下载地址: https://www.continuum.io/downloads

    conda ‐‐version #获取conda版本 conda update conda #升级conda

2.bioconda

3.minicoda

安装

bash Miniconda2-latest-MacOSX-x86_64.sh

#安装conda的过程中,可以选择安装路径 /usr/local/miniconda2

查看conda中有多少程序

conda list 

二、环境管理

查看当前系统下的环境

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

清除 Conda 缓存:

conda clean --all

conda clean –all 命令将会清除 Conda 缓存和临时文件,而不会删除已经安装的软件包和环境。它主要用于清理不必要的缓存和临时文件以释放磁盘空间。

四、具体事例

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

五、其他的小技巧

5.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"

5.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

5.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=

5.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呀。

4.5 conda从一台服务器转移到另一台服务器

如果两个conda对应的路径都一样,则可以,直接拷贝

scp -R system1:/path/to/anaconda system2:/path/to/anaconda

接着:

vim /etc/profile

# Anaconda 2
export PATH=/data/software/anaconda2/bin:$PATH
alias activate="source /data/software/anaconda2/bin/activate root"
alias deactivate="source /data/software/anaconda2/bin/deactivate"

source /etc/profile

5.镜像的修改

ARN: ============================================================================= There is a problem with your Conda configuration!

You will need to set-up the conda-forge and bioconda channels correctly. Please refer to https://bioconda.github.io/user/install.html#set-up-channels NB: The order of the channels matters!

(base) [sam@c01 nextNEOpi]$ cat ~/.condarc channels:

  • bioconda
  • conda-forge
  • defaults

更新为:

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.bfsu.edu.cn/anaconda/pkgs/main
  - https://mirrors.bfsu.edu.cn/anaconda/pkgs/free
  - https://mirrors.bfsu.edu.cn/anaconda/pkgs/r
  - https://mirrors.bfsu.edu.cn/anaconda/pkgs/pro
  - https://mirrors.bfsu.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.bfsu.edu.cn/anaconda/cloud
  msys2: https://mirrors.bfsu.edu.cn/anaconda/cloud
  bioconda: https://mirrors.bfsu.edu.cn/anaconda/cloud
  menpo: https://mirrors.bfsu.edu.cn/anaconda/cloud
  pytorch: https://mirrors.bfsu.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.bfsu.edu.cn/anaconda/cloud

命令:

conda clean -i
conda config --show

conda env create -f assets/nextNEOpi.yml

六、报错

1. 报错1

pip install pandas

Cannot remove entries from nonexistent file /usr/local/bin/anaconda2/lib/python2.7/site-packages/easy-install.pth

解决办法

conda remove setuptools
cd /home/sam/anBank
pip install -r requirements

2. Could not find conda environment

bash脚本中,调用activate的时候,传递参数进去,会报错:

[sam@c02 xena]$ bash /data/user/sam/project/waves/data/services/tcga_expression_analysis.sh FOLH1
Working dir: /data/database/xena
Could not find conda environment: FOLH1

解决办法:

source /data/software/anaconda3/bin/activate 

改成:

source /data/software/anaconda3/bin/activate /data/software/anaconda3;

具体例子:

#!/bin/bash
echo "Working dir: $(pwd)"
dir=$(pwd)
genename=$1
source /etc/profile;
source /data/software/anaconda3/bin/activate /data/software/anaconda3;
#activate3
python /data/user/sam/project/BPKit/bpkit/database/tcga_analysis.py $genename
conda deactivate
echo 'Finish analysis'

3. CondaValueError : Malformed version string ‘~‘: invalid character(s).

conda -V 或 conda –version 查看conda版本 conda update conda 更新conda

更新conda时报错: CondaValueError: Malformed version string ‘~': invalid character(s).

解决方案:换源

conda upgrade -n base -c defaults --override-channels conda

参考资料

药企,独角兽,苏州。团队长期招人,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn