Archives

Categories

Linux 平台轻松解决Python3环境: conda

一、 引子(需求场景)

因为 Python2 和 Python3 之间的语法差异, 现在Python开发者主要有两大阵营,Python 2.7.x 版本阵营 和 Python 3 阵营, 为了使用不同阵营的包, 导致我们要维护两套Python系统。 当前Linux发行版本主要还是Python2环境,所以需要额外一套方案使得Python2和Python3共存, 最简单的方案应该就是切换环境变量,这样做的好处是我们可以包括任意多的版本,这里使用conda来切换环境。

这篇可以作为介绍Bioconda的引子,只介绍如何安装 miniconda 解决 Python 环境的问题,如何使用bioconda 安装生物信息软件,后面再讲。

bioconda

二、使用Conda进行Python包管理

下面就讲几点:

  • miniconda 介绍
  • miniconda 安装
  • 设置环境变量
  • 安装python包
  • 设定和管理特定Python环境

1 miniconda 介绍:

先摆出几个概念,Anaconda, conda, Miniconda, pip,可以参考官方文档:
What’s the difference between Anaconda, conda, and Miniconda?
也可以参考一篇博客:Anaconda、Miniconda、Conda、pip的相互关系 , 讲的很清楚, 为了完整性,这里简单介绍:

  • conda, 包管理器,安装和管理包的命令接口;
  • Miniconda, conda的安装程序,会安装Python、conda及其各种依赖程序;
  • Anaconda, Python科学计算生态系统中的完整分布,包含了Conda及其各种库。
  • pip, Python的包管理器.

Windows平台请参考知乎:[CONDA] – 上手环境包管理系统

2 miniconda 安装:

wget  https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
sh  Miniconda3-latest-Linux-x86_64.sh

 >>> ENTER
 >>> yes
 >>> /biostack/bioconda
 >>> no

这里没有将conda 环境变量直接添加到 .bashrc,是为了更方便隔离系统自带的Python及其pip包管理。

3 设置环境变量:

配置和设置 activate 文件

cd /biostack/bioconda/envs
echo 'export PATH=/biostack/bioconda/bin:$PATH' >activate.sh
vim ~/.bashrc

在.bashrc设置alias

alias bioconda='source /biostack/bioconda/envs/activate.sh'
alias pip='pip --trusted-host pypi.douban.com '

立即生效

$source ~/.bashrc

设置切换 Python3 环境模式:

$bioconda
$which pip
    alias pip='pip --trusted-host pypi.douban.com '
    /biostack/bioconda/bin/pip

通过这样设置,我们可以在需要的时候才切换conda环境,执行 ·bioconda· 之前不会对系统产生任何影响;

4 安装包:

现在我们有两种模式安装Python包,pip和conda。
安装模式都很简单, 而且二者兼容,可以二选一。

pip 模式(可以参考:Pythoner的福利,豆瓣的PyPI源 设置douban的python包镜像):

pip install scipy

conda 安装模式

conda install numpy

conda 直接访问国外网站速度比较慢,需要设置国内镜像:
执行:

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

也可以手动添加到 ~/.condarc, 内容如下:

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

这样我们就可以使用命令:

conda install matplotlib

利用 tuna 的镜像安装 python 包;

安装路径,其实安装的Python包都在python发行版本根目录:

$ python -c "import scipy; print (scipy.__file__)"
/biostack/bioconda/lib/python3.6/site-packages/scipy/__init__.py

使用conda list 和 pip list 都可以获取已安装的包;

conda安装模式可以指定仓库(channel), 比如安装bioconda的软件:

conda config --add channels bioconda
conda install -c  bioconda  agg

5 设定特定Python环境:

需求:比如我们需要安装2.7的Python环境:

通过conda create进行安装py-default环境,设置python版本 2.7 (实际安装版本: 2.7.13)

$conda create --name py-default   python=2.7

激活py-default环境

$source activate py-default

查看python版本

$which python
/biostack/bioconda/envs/py-default/bin/python

安装包,并安装到py-default环境

$conda  install -n  py-default docopt

查看安装路径:

$python -c "import docopt; print (docopt.__file__)"
/biostack/bioconda/envs/py-default/lib/python2.7/site-packages/docopt.pyc

在py-default环境生效前提下可以不需要指定-n py-default

$conda  install gffutils
/biostack/bioconda/envs/py-default/lib/python2.7/site-packages/gffutils/__init__.pyc

如果不在py-default环境下指定-n py-default docopt 也可以正确安装。

退出环境变量:

source deactivate py-default

列出所有的环境:

$conda-env list
# conda environments:
#
py-default               /biostack/bioconda/envs/py-default
root                  *  /biostack/bioconda

删除Python环境:

conda-env  remove -n py-default

这样在/biostack/bioconda/envs/py-default 构建的py-default变量就会被删除了。

三、后续

基于conda的bioconda软件分发已经占领了R和Python包管理和安装,很多其它生物信息软件也陆续被加入bioconda阵营,值得深入研究,后续会研究:

  • 如何构建channel镜像;
  • 通过 anaconda 构建 conda源。

Comments are closed.