blog icon indicating copy to clipboard operation
blog copied to clipboard

Anaconda的安装及conda的使用

Open qingquan-li opened this issue 5 years ago • 0 comments

开发环境:

  • macOS Sierra 版本 10.12.6
  • Python

一、安装Anaconda

Anaconda 是一个包管理器,一个环境管理器,一个 Python/R 数据科学发行版(平台),以及超过 1500 多个开源软件包(anaconda-2019.03-py37_0)的集合。

Anaconda 包含 1500多个 Python/R 数据科学包(data science packages)。使用 Conda 管理库(libraries),依赖项(dependencies)和环境(environments)。

可以简单理解为:Anaconda 是自带很多软件包的 Python 发行版,Conda 是包管理器(类似 pip )。

Miniconda(Miniconda is a free minimal installer for conda.)官网下载:https://docs.conda.io/en/latest/miniconda.html

1. 安装Anaconda

安装 Anaconda ,使用图形化(非命令行)界面安装即可,也是官方推荐的安装方式。

2. 验证安装

  • 输入如下命令。如果Anaconda已安装并正常工作,则会显示已安装软件包及其版本的列表。conda list (新建或重启终端后, conda 才会生效。)
  • 输入命令python。此命令运行Python shell。如果安装并运行Anaconda,它启动时显示的版本信息将包括“Anaconda”。要退出Python shell,请输入命令quit()
  • 使用命令打开Anaconda Navigator anaconda-navigator。如果Anaconda安装正确,将打开图形程序Anaconda Navigator。

3. bash/zsh 切换

  • bash 切换到 zsh (一般要新建或重启终端后才生效):

    • (base) fatli@fatli:~$ chsh -s /bin/zsh
  • zsh 切换到 bash (前提是已经安装zsh,一般要新建或重启终端后才生效):

    • ➜ /Users/fatli > chsh -s /bin/bash
  • ~ 目录是你当前的用户目录( /Users/username ),这里是 /Users/fatli

  • / 目录是根目录。根目录是 Uers 目录的上一级目录。

bash

三项验证成功。

(base) fatli@fatli:~$ conda list
# packages in environment at /anaconda3:
#
# Name                    Version                   Build  Channel
_ipyw_jlab_nb_ext_conf    0.1.0                    py37_0
alabaster                 0.7.12                   py37_0
# 省略……

(base) fatli@fatli:~$ python
Python 3.7.3 (default, Mar 27 2019, 16:54:48)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

(base) fatli@fatli:~$ anaconda-navigator
/anaconda3/lib/python3.7/site-packages/anaconda_navigator/api/conda_api.py:1364: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
# 省略……

zsh

三项验证都失败。

➜  /Users/fatli > conda list
zsh: command not found: conda
➜  /Users/fatli > python
Python 2.7.10 (default, Feb  7 2017, 00:08:15)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
➜  /Users/fatli > anaconda-navigator
zsh: command not found: anaconda-navigator

➜  /Users/fatli > export PATH="/anaconda3/bin:$PATH"
# 导入Anaconda路径后,3项验证成功。然而每次新建终端(zsh模式下)都要导入一次。

原因:安装 Anaconda 时,默认将 Anaconda 的 bin 路径安装到 bash 模式下,可见 ~/.bash_profile 文件。

zsh模式下,不能验证 Anaconda 的解决方案:在 ~/.zshrc 文件下添加 Anaconda 路径:

export PATH="/anaconda3/bin:$PATH"

此时可能:conda will not modify your shell scripts at all. In order to initialize after the installation process is done, first run source<path to conda>/bin/activate and then run conda init.


附:(base)出现在Terminal提示符前

完成以上配置后,(base) 可能会默认出现在 Terminal 命令提示符前,如下:

(base) ➜  /Users/fatli >

这有可能是因为 auto_activate_base 被设置为 True 导致的,可以通过以下命令查看并进行修改:

(base) ➜  /Users/fatli > conda config --show | grep auto_activate_base
auto_activate_base: True
(base) ➜  /Users/fatli > conda config --set auto_activate_base False
(base) ➜  /Users/fatli > conda config --show | grep auto_activate_base
auto_activate_base: False

此时重新打开 Terminal ,命令提示符前的 (base) 便会消失。



二、conda管理环境

Conda 是一个开源包管理系统和环境管理系统,可在 Windows,macOS 和 Linux 上运行。Conda 可以快速安装,运行和更新软件包及其依赖项。Conda 可以轻松地在本地计算机上的环境之间创建,保存,加载和切换。它是为 Python 程序创建的,但它可以为任何语言打包和分发软件。

Anaconda 包含 1500+ 的 Python / R 数据科学包。这些包一部分已经内置安装,如 beautifulsoup4 ;一部分需要 $ conda install PACKAGENAME 手动安装,如 Scrapy 。

Tip: You can abbreviate many frequently used command options that are preceded by 2 dashes (--) to just 1 dash and the first letter of the option. So --name and -n are the same, and --envs and -e are the same.

参考:https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html

# 创建环境
# myenv为新环境的名称
conda create --name myenv
# 此操作新建一个干净的环境,不会安装任何包,环境中Python版本同系统Python版本(不推荐)
# 安装指定Python版本的环境(推荐):
conda create --name py36_env python=3.6
# 激活环境
conda activate myenv
# 停用环境(Conda从系统命令中删除当前活动环境的路径名)
conda deactivate

# "conda activate" and "conda deactivate" only work on conda 4.6 and later versions.
# For conda versions prior to 4.6, run: "source activate" or "source deactivate"
# 查看环境信息
conda info --envs # 或者使用:conda env list
# conda environments:
#
base                  *  /anaconda3
myenv                    /anaconda3/envs/myenv
# 克隆环境
# myclone为新环境的名称,myenv为要复制的现有环境的名称
conda create --name myclone --clone myenv
# 删除环境(并删除所有包)
conda remove --name myenv --all # 或者使用:conda env remove --name myenv


三、conda管理Python

参考:https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-python.html

# 查看可用的Python版本 
conda search python
# 安装指定Python版本的环境(推荐,速度快)
conda create --name py36_env python=3.6
# 此操作会安装python3.6以外,还会安装以下包:
# ca-certificates、certifi、libcxx、libcxxabi、libedit、libffi、ncurses、openssl、pip、python、readline、setuptools、sqlite、tk、wheel、xz、zlib
# 安装指定Anaconda Python版本的环境(不推荐,速度慢)
conda create --name py37_env python=3.7 anaconda
# anaconda是包含Anaconda发行版在内的所有Python包的元数据包。
# 此操作会安装python3.7以外,还会安装anaconda附带安装的包(非常多):https://docs.anaconda.com/anaconda/packages/py3.7_osx-64/
# 更新python 
# 更新当前分支中的最新版本。例如python3.6.7升级到python3.6.8
conda update python
# 更新python到另一个分支。例如python3.6分支升级到python3.7分支
conda install python=3.7


四、conda管理包

参考:https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-pkgs.html

# 搜索软件包,以确定安装渠道

# 查看指定包(scipy)能否直接使用conda安装。能查找到则可直接使用conda安装
conda search scipy

# 查看指定包(scipy)能否从Anaconda.org获取安装
conda search --override-channels --channel defaults scipy

# 查看指定包(iminuit)是否存在于指定渠道,以从指定渠道获取安装
conda search --override-channels --channel http://conda.anaconda.org/mutirri iminuit
# 查看指定包(scrapy)是否存在于指定渠道,以从指定渠道获取安装
conda search --override-channels --channel conda-forge scrapy

# 添加软件包安装渠道
# 以下命令将渠道“conda-forge”添加到渠道列表的顶部,使其成为最高优先级
# 执行此命名后,conda会默认从conda-forge中获取安装包
# 参考:https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-channels.html
conda config --add channels conda-forge
# 应用场景:例如Ubuntu16.04 TLS中,通过安装Miniconda的形式安装conda,并没有conda-forge这个channel。
然而,原有的channels中可能没有提供某些第三方库(例如python-dotenv、uwsgi),此时则需要添加conda-forge这个channel。
否则,只能 指定channel进行第三方库的安装,例如 `$ conda install --channel conda-forge python-dotenv` 。


# 删除channels:conda-forge
conda config --remove channels conda-forge

# 查看当前软件包的安装渠道
conda config --show-sources
# 使用conda安装软件包

# 查看指定包(scipy)能否直接使用conda安装。能查找到则可直接使用conda安装
conda search scipy

# 安装指定包(scipy)到指定环境(myenv)中
conda install --name myenv scipy

# 安装指定包到当前环境中
conda install scipy
# 安装指定版本的包
conda install scipy=0.15.0
# 一次安装多个包(最好一次安装所有软件包,以便同时安装所有依赖项)
conda install scipy curl
conda install scipy=0.15.0 curl=7.26.0

# 安装指定包版本和python版本的包(例如PhantomJS已经暂停开发,新版本的网络数据采集工具Selenium不再对其提供支持,所以需要安装旧版本的Selenium):
# 此处不指定软件包selenium=3.0.1的python版本,则会默认下载selenium=3.0.1=py27_0
conda install selenium=3.0.1=py35_0
# 从Anaconda.org安装软件包

# 使用conda无法安装的软件包,可以从Anaconda.org渠道获取安装
# 查看指定包(scipy)能否从Anaconda.org获取安装
conda search --override-channels --channel defaults scipy
# 或者,在https://anaconda.org中搜索需要的包,根据提示进行安装,例如:
conda install --channel pandas bottleneck

# 验证安装
conda list | grep bottleneck
bottleneck                1.2.1            py36h1d22016_1
# 安装非conda包(使用pip安装软件包)

# 如果无法从conda或Anaconda.org获得软件包,可以使用其它软件包管理器(如pip)查找并安装软件包
# 以安装软件包see为实例:
conda install see
PackagesNotFoundError: The following packages are not available from current channels:

conda search see
PackagesNotFoundError: The following packages are not available from current channels

conda search --override-channels --channel defaults see
PackagesNotFoundError: The following packages are not available from current channels

# 使用pip查找并安装软件包
pip search see
pip install see
# 注意:使用conda create --name myenv创建的干净的环境(不安装任何软件包),没有安装pip,需要手动安装pip
# 否则将会使用系统默认的pip进行安装软件包
conda install pip # 安装最新版本的pip及其依赖,并安装最新的Python版本

# 验证安装
conda list | grep see
see                       1.4.1                    pypi_0    pypi
# 删除软件包

# 要在当前环境中删除SciPy软件包
conda remove scipy
# 要一次删除多个包,例如SciPy和cURL
conda remove scipy curl

# 如果使用pip安装的包,则要使用pip删除
pip uninstall see
# 更新软件包

# 更新指定的包
conda update biopython

# 更新Python
conda update python

# 更新conda本身(前提是已经在当前环境中安装conda,未安装执行conda install conda进行安装)
conda update conda

# 更新Anaconda元数据包
conda update conda
conda update anaconda
# 防止软件包更新

# 在当前环境的conda-meta目录下,添加一个名为pinned的文件,写入不想更新的软件包列表:
# 示例:强制NumPy保留1.7系列的版本,即以1.7开头的版本。强制SciPy保持在0.13.3版本
numpy 1.7.*
scipy ==0.13.3
# 此时,使用conda update numpy更新命令将使NumPy版本被限制在1.7.1(1.7系列的最高版本)
# 此时,使用conda install scipy=0.15.0安装另一个版本的Scipy将报错

# 使用--no-pin标志可以覆盖(override)包的更新限制,即忽略pinned文件规则强制更新
conda update numpy --no-pin
# 由于pinned的规则包含在每次的conda安装中,因此后续的conda update命令没有--no-pin,将使NumPy恢复至1.7系列的版本

qingquan-li avatar Apr 19 '19 16:04 qingquan-li