一、简介
Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。Anaconda利用工具/命令conda来进行package和environment的管理,并且已经包含了Python和相关的配套工具。
- 适用语言:Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。
- 适用平台:Windows, macOS, Linux
1. conda与anaconda的差别
conda
:可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理。包管理与pip的使用类似,环境管理则允许用户方便地安装不同版本的python并可以快速切换。
Anaconda
:是一个包含180+的科学包及其依赖项的发行版本。其包含的科学包包括:conda, numpy, scipy, ipython notebook等。其实还有Miniconda,顾名思义,它只包含最基本的内容——python与conda,以及相关的必须依赖项,对于空间要求严格的用户,Miniconda是一种选择。
conda的设计理念——conda将几乎所有的工具、第三方包都当做package对待,甚至包括python和conda自身!因此,conda打破了包管理与环境管理的约束,能非常方便地安装各种版本python、各种package并方便地切换。
2. pip 与 conda 比较
1. 依赖项检查
▪ pip:
① 不一定会展示所需其他依赖包。
② 安装包时或许会直接忽略依赖项而安装,仅在结果中提示错误。
▪ conda:
① 列出所需其他依赖包。
② 安装包时自动安装其依赖项。
③ 可以便捷地在包的不同版本中自由切换。
2. 环境管理
▪ pip:维护多个环境难度较大。
▪ conda:比较方便地在不同环境之间进行切换,环境管理较为简单。
3. 对系统自带Python的影响
▪ pip:在系统自带Python中包的更新/回退版本/卸载将影响其他程序。
▪ conda:不会影响系统自带Python。
4. 适用语言
▪ pip:仅适用于Python。
▪ conda:适用于Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。
注意:
- pip只是包管理器,无法对环境进行管理。因此如果想在指定环境中使用pip进行安装包,则需要先切换到指定环境中,再使用pip命令安装包。
- pip无法更新python,因为pip并不将python视为包。
- pip可以安装一些conda无法安装的包;conda也可以安装一些pip无法安装的包。因此当使用一种命令无法安装包时,可以尝试用另一种命令。
▪ conda结合了pip和virtualenv的功能。
二、下载
进入Anaconda的官网进行下载或学习。选择想下载的Python版本,这里我选择的是Python3.6。选择你的操作系统和位数,这里我们选的是Linux,然后点击Download按钮就开始下载了
Anaconda的下载页参见官网下载,Linux、Mac、Windows均支持。
安装时,会发现有两个不同版本的Anaconda,分别对应Python 2.7和Python 3.5,两个版本其实除了这点区别外其他都一样。安装哪个版本并不本质,因为通过环境管理,我们可以很方便地切换运行时的Python版本。
$ wget https://repo.anaconda.com/archive/Anaconda3-5.1.0-Linux-x86_64.sh
然后赋权并执行安装程序:
$ chmod +x Anaconda3-5.1.0-Linux-x86_64.sh
$ ./Anaconda3-5.1.0-Linux-x86_64.sh
安装过程如下:
...
Do you accept the license terms? [yes|no]
>>> yes
Anaconda3 will now be installed into this location:
/home/py/anaconda3
- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below
[/home/py/anaconda3] >>> /anaconda/anaconda3 **输入自定义安装路径,如果用默认的话回车跳过**
然后将anaconda加入环境变量,并使其生效:
$ vi .bash_profile
在最后一行加上如下配置:
export PATH=/anaconda/anaconda3/bin:$PATH
如果是默认安装路径的话则为:
export PATH=/home/py/anaconda3/bin:$PATH
然后使其生效:
$source .bash_profile
最后检测一下安装结果:
$ conda -V
which conda
conda --version
如果需要卸载anaconda的话,只需要删除anaconda目录即可:
$ rm -rf /anaconda/anaconda3
Linux卸载可以使用如下方式:
#1安装 Anaconda-Clean package
conda install anaconda-clean
#2. 接着输入命令行进行卸载:
anaconda-clean --yes
#3.删除conda相关文件:
rm -rf ~/anaconda3
rm -rf ~/.anaconda_backup
更新conda
#1、更新conda到最新版本:
conda update -n base conda
#2、然后执行:
conda update --all
三、创建环境
Htslib 1.10 may cause conflicts with some of the already installed packages. In such a case, hypo can be installed in a new environment as follows:
有时候,将要下载的包可能会与一些已经安装的包发生冲突。在这种情况下,创建新环境,激活新环境,安装在新环境中:如hypo软件的安装。
conda create --name hypo_env
conda activate hypo_env
conda install -c bioconda hypo
四、高级用法
1. 复制环境到新电脑或者用户(clone)
输出环境信息到文本
conda env export -n hicExplorer > environment.yml
依照文本信息重新生成一个同样环境
conda env create -f environment.yml
比如,依照文本信息重新生成 training环境
conda env create -n training -f environment.yml
2. root安装一次,多用户共享
参考(验证是正确的):http://www.dxulab.org/wiki/anacondaenvformulti-users
sudo su -
adduser anaconda
bash Anaconda3-2019.03-Linux-x86_64.sh -b -p /opt/anaconda
chown -R anaconda:anaconda /opt/anaconda
chmod -R go-w /opt/anaconda
chmod -R go+rX /opt/anaconda
# And then you can put /opt/anaconda/bin in the PATH added in /etc/profiles.d/anaconda.sh (or wherever). A (very) nice thing about Anaconda is that it requires no environment variables to be set. Adding it to your PATH is just for convenience.
# You (as the sudo-empowered admin) can then go and create new environments for all users on the system:
sudo -u anaconda /opt/anaconda/bin/conda env create -n flye_test -c bioconda flye
sudo -u anaconda /opt/anaconda/bin/conda env create -n training -f environment.base.yml
# And then any user, say janesmith can go and use these:
source activate coolscience # will add /opt/anaconda/envs/coolscience/bin to PATH
# Additionally they can create their own envs:
conda create -n webdev django flask sqlalchemy pylons
# which will (should) be created in ~janesmith/.conda/envs/webdev.
# I have tested exactly 0% of the commands above, but they should point you in the right direction. Additionally, I must note, Conda is known to have “gotchas” that can come up when using it in a multi-user environment like this. A partial record of the challenges you may face are recorded in this issue:
- root安装一次,多用户共(无患子服务器),发现无需新增用户anaconda以及将文件归属anaconda,普通用户也能成功调用
sudo用户切换后,运行如下命令:
sudo -s
bash Anaconda3-2019.03-Linux-x86_64.sh -b -p /opt/anaconda
其中environment.flye.yml和environment.base.yml是在虚拟机中环境的导出文件
conda env export -n flye > environment.flye.yml
conda env export -n base > environment.base.yml
依照创建创建环境flye_test和training,
/opt/anaconda/bin/conda env create -n flye_test -f environment.flye.yml
/opt/anaconda/bin/conda env create -n training -f environment.base.yml
普通用户调用环境
方法1:
进入某个环境source /opt/anaconda/bin/activate flye_test
[junting_feng@localhost ~]$ /opt/anaconda/bin/conda info --envs
# conda environments:
#
base * /opt/anaconda
flye_test /opt/anaconda/envs/flye_test
[junting_feng@localhost ~]$ source /opt/anaconda/bin/activate flye_test
(flye_test) [junting_feng@localhost ~]$
退出当前环境source /opt/anaconda/bin/deactivate,忽略报错
(flye_test) [smrtanalysis@localhost ~]$ source /opt/anaconda/bin/deactivate
DeprecationWarning: 'source deactivate' is deprecated. Use 'conda deactivate'.
[smrtanalysis@localhost ~]$
方法2:
执行/opt/anaconda/bin/conda activate flye_test遇到如下报错:
[zaohai_zeng@localhost ~]$ /opt/anaconda/bin/conda activate flye_test
CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
To initialize your shell, run
$ conda init <SHELL_NAME>
Currently supported shells are:
- bash
- fish
- tcsh
- xonsh
- zsh
- powershell
See 'conda init --help' for more information and options.
IMPORTANT: You may need to close and restart your shell after running 'conda init'.
按照提示运行 /opt/anaconda/bin/conda init命令,将conda写入.bashrc文件
(base) [zaohai_zeng@localhost ~]$ /opt/anaconda/bin/conda init
no change /opt/anaconda/condabin/conda
no change /opt/anaconda/bin/conda
no change /opt/anaconda/bin/conda-env
no change /opt/anaconda/bin/activate
no change /opt/anaconda/bin/deactivate
no change /opt/anaconda/etc/profile.d/conda.sh
no change /opt/anaconda/etc/fish/conf.d/conda.fish
no change /opt/anaconda/shell/condabin/Conda.psm1
no change /opt/anaconda/shell/condabin/conda-hook.ps1
no change /opt/anaconda/lib/python3.7/site-packages/xontrib/conda.xsh
no change /opt/anaconda/etc/profile.d/conda.csh
modified /home/zaohai_zeng/.bashrc
==> For changes to take effect, close and re-open your current shell. <==
- 退出,并重新登录
进入环境 conda activate flye_test
(base) [liuliu@localhost ~]$ conda activate flye_test
(hypo_env) [liuliu@localhost ~]$
退出环境 conda deactivate
(fhypo_env) [liuliu@localhost ~]$ conda deactivate
(base) [liuliu@localhost ~]$
网友评论