【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
- 生物信息分析相关的工具都能在这找到! 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的过程中,可以选择安装路径 /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