一文了解数据科学神器 Anaconda

我们知道:Python 是一种面向对象的解释型计算机程序设计语言,其具有跨平台的特点,可以在 Linux、macOS 以及 Windows 系统中安装环境并使用。也就是说,其编写的代码在不同平台上运行时,几乎不需要做较大的改动,使用者无不受益于它的便捷性。

此外,Python的强大之处在于它的应用领域范围之广,遍及人工智能、科学计算、Web开发、系统运维、大数据及云计算、金融、游戏开发等等。而实现其强大功能的前提,就是 Python 具有数量庞大且功能相对完善的标准库和第三方库。通过对库的引用,能够实现对不同领域业务的开发。

然而正是由于库的数量庞大,对于这些库的管理维护成为既重要但复杂度又高的事情,这对于 Python 开发人员来说是极不友好的。同时 Python 多版本控制也是 Python 开发过程中极其常见的并且难以管理的。此时,Anaconda 粉墨登场…

更多 Python 版本管理以及运行环境相关内容,请关注博主 Git 博文系列:

之一 >>> Python-Vers Management

之二 >>> Pythoner 神器之 virtualenv

之三 >>> 一文了解数据科学神器 Anaconda

之四 >>> Jupyter Tutorial


Anaconda 提供一种使用虚拟隔离环境来解决库管理以及维护问题的策略,它通过 conda 工具解决了 Python 开发者的两大痛点:

  1. 提供包管理:功能类似于 pip,Windows 平台安装第三方包经常失败的场景得以解决;
  2. 提供虚拟环境管理:功能类似于 virtualenv,解决了多版本 Python 并存问题。

话不多说了,下面我们正式开始 Anaconda 的学习:

What Is Anaconda?

Anaconda 官方地址 >>>> [https://www.anaconda.com/]

Introduction

Anaconda 就是可以便捷获取包且对包进行管理,同时对环境进行统一管理的开源的 Python 发行版本。其包含了 Conda、Python 等 180 多个科学包及其依赖项。

由于包含了大量的科学计算包,Anaconda 的下载文件比较大(Linux 约 500 MB),如果只需要某些包,或者需要节省带宽或存储空间,也可以使用 Miniconda 这个较小的发行版(仅包含 conda 和 Python)。


Advantages

Anaconda 拥有 Conda 包管理器、环境管理器Conda 科学包1,000+ 开源库 等等,Anaconda 还具有如下特点:

  1. 开源
  2. 安装、配置过程简单
  3. 高性能使用 Python 和 R 语言
  4. 免费的社区支持

Conda vs Pip vs Virtualenv

进行 Python 学习、开发过程中,你肯定听说或者使用过 Pip 包管理工具、Virtualenv 虚拟环境管理器,再加上这里我们提到的 Anaconda、conda 工具。下面我们来横向比较一下这些工具的区别:

1 –> Anaconda

Anaconda 是一个包含 180+ 的科学包及其依赖项的 Python 发行版本。其包含的科学包包括:conda, numpy, scipy, ipython, jupyter notebook 等等,你可以将其理解为一个 Python 的开发生态圈。

2 –> conda

  • conda 是包管理工具,也是虚拟环境管理以及维护工具;
  • conda 为 Python 项目而创造,但同样也适用于:Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN 等语言;
  • 适用平台:Windows && Mac OS && Linux;

Conda 主要用途:

  1. 通过 conda 快速安装、运行和升级包及其依赖项;
  2. 使用 conda 可以在计算机中便捷地创建、保存、加载和切换虚拟环境。

前面我们提到过多版本 Pyhton 环境的问题。如果使用 conda ,仅需要几条命令,你就可以创建一个个完全独立的环境来运行不同的 Python 版本,同时你可以继续在系统原生环境中使用你常用的 Python 版本。


3 –> pip

  • pip 是常用的用于安装和管理软件包的 Python 包管理器;
  • pip 编写语言:Python;
  • Python 中 pip 的默认安装:

Python 2.7.9 及后续版本:默认安装,命令为 pip
Python 3.4 及后续版本:默认安装,命令为 pip3

  • 名称由来:pip 采用的是递归缩写进行命名的。其名字被普遍认为来源于两处:

Pip installs Packages(pip 安装包)
Pip installs Python(pip 安装 Python)


4 –> Virtualenv

  • virtualenv:用于创建一个独立的 Python 环境的工具;
  • virtualenv 可解决的问题:
  1. 当一个程序需要使用 Python 2.7 版本,而另一个程序需要使用 Python 3.6 版本,如何同时使用这两个程序?
  2. 如果将所有程序都安装在系统下的默认路径(如:/usr/lib/python2.7/site-packages),当不小心升级了本不该升级的程序时,将会对其他的程序造成影响。
  3. 如果想要安装程序并在程序运行时对其库或库的版本进行修改,都会导致程序的中断。
  4. 在共享主机时,无法在全局 site-packages 目录中安装包。
  • virtualenv 将会为它自定义的虚拟环境创建一个独立的环境,这并不与其他 virtualenv 环境共享库;同时也可以选择性地连接已安装的全局库。

  • virtualenv 依赖于操作系统级别的 Python 解释器,生成相应版本的虚拟级别 Python 解释器,这相对于 Conda 来说是缺点。


Compare:Conda && Pip

我们已经知道,pipconda 都可以用于安装和管理 Python 相关软件包以及其依赖项。那么它们有什么区别?(5 tips

1 –> 依赖项检查

  • pip:

    1. 不一定会展示所需其他依赖包;
    2. 安装包时或许会直接忽略依赖项而安装,仅在结果中提示错误。
  • conda:

    1. 罗列出所需其他依赖包;
    2. 安装包时自动安装其依赖项;
    3. 可以便捷地实现安装包的不同版本自由切换(自由安装不同版本的包)。

注意:同样可以使用 conda 虚拟环境中安装的 pip 进行软件包的安装,所以在 conda 封装的独立环境中我们可以同时使用 conda、pip 进行包管理。

2 –> 环境管理

  • pip:维护多个环境难度较大;
  • conda: 比较方便地在不同环境之间进行切换,环境管理较为简单。

3 –> 对系统自带 Python 的影响

  • pip:在系统自带 Python 中包的 更新/回退版本/卸载 将影响其他程序;
  • conda:多版本环境实现隔离,不会影响系统自带 Python。

4 –> 适用语言

  • pip:仅适用于 Python;

  • conda:适用于 Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN 等多语言环境。

5 –> conda 与 pip 的关系

你可以认为:conda 结合了 pipvirtualenv 的功能,即 conda ≈ pip + virtualenv


How to setup Anaconda?

这一部分我们来看,Anaconda 安装环境要求以及如何快速完成 Anaconda 的安装:

Environmental Requirement

想要安装 Anaconda,你要需要确保如下:

  1. Anaconda 平台支持:Windows、macOS、Linux(x86 / Power8);
  2. 系统位数要求:32 位或 64 位系统均可;
  3. 下载文件大小:约 500 MB(建议预留一定空间(至少 3 G),用于存放各种科学包以及 Python 库)

Anaconda Setup

Anaconda 官方下载地址 >>>> 传送门

检测好安装环境后,下面我们正式开始不同平台下(Windows && Linux) Anaconda 的安装说明:

For Windows

1 –> Download Package

前往官方下载页面选择 Windows 下载项。你会发现,有两个版本可供选择:Python 3.7(最新 Python3.X) 和 Python 2.7。你需要选择基于 Python 3.7 下载,还是 Python2.7,这决定了安装好的 Anaconda Base(基础)环境中的 Python 版本,毕竟 Anaconda 也是基于 Python 工作的。

目前,Anaconda 官方站点下载页面只支持 Python3.X 版本系列的 Anaconda 下载。

选择版本之后,根据你的操作系统的情况选择 64-Bit Graphical Installer 或着 32-Bit Graphical Installer 进行相应的安装包下载。 例如,我选择 Python3.7 && 64bit 的 Anaconda 安装包: Anaconda3-5.2.0-Windows-x86_64.exe

2 –> Begin To Setup

完成安装包下载之后,双击下载文件,启动安装程序开始安装,【Next】:

3 –> 同意 Anaconda 相关软件使用协议条款

阅读许可证协议条款,然后勾选 I Agree 进行下一步。

4 –> 安装用户选择

选择 Install for: Just me 还是 All Users。假如你的电脑有多个用户(Users),可以选择考虑 All Users,一般选择 Just me 即可。 然后 【Next】:

5 –> 自定义 Anacodna 安装位置

设置自定义 Anaconda 安装位置,默认是安装到 C:\Users\XXX\Anaconda3,【Next】:

6 –> 配置高级选项(Advanced Options)

Advanced Options 设置中,不要勾选 Add Anaconda to my PATH environment variable. (“添加 Anaconda 至我的环境变量”)。因为如果勾选,则将会影响其他程序的使用。

如果想要使用 Anaconda,则通过在开始菜单中打开 Anaconda Navigator 或者在开始菜单中的 Anaconda Prompt(类似 DOS)下进行通过命令行使用。

我们推荐不选择 Register Anaconda as my default Python 3.6 。如果你打算在当前系统中默认调用原生的 Python 解释器,而不是使用 Anaconda 对应版本的 Python 解释器,那就不要勾选 Register Anaconda as my default Python 3.6

然后开始 【Insatll】:

Anaconda Base 版本的 Python 解释器和操作系统原生 Python 解释器冲突问题:可以通过修改相应 Python 解释器命名来解决,例如分别改为:python_ana.py && python3.x.py。更推荐的方法是:设置 Anaconda 环境变量优先级低于系统原生 Python 环境变量(参见【9 –> 手动配置 Anaconda 环境变量】),想要使用 Anaconda Base,可以使用 conda 进行切换。

Anaconda 安装过程还是很漫长的,请耐心等待…

经过漫长的等待,终于安装完成 Installation Complete 了,点击最后一个 【Next】。之后会出现推荐安装 IDE:Microsoft Visual Studio Code 界面:

如果需要安装 Microsoft VSCode,点击 Install Microsoft VSCode,否则我们选择 【Skip】。

7 –> Thanks For Setup

进入 “Thanks for installing Anaconda!” 界面则意味着安装成功,点击 “Finish” 完成安装即可。

注意:如果你不想了解 “Anaconda 云” 和 “Anaconda 支持” ,则可以选择不勾选 Learn more about Anaconda CloudLearn more about Anaconda Support

8 –> 安装验证

这里提供两种验证方法,可选用以下任意方法:

  1. “开始(Win)–> Anaconda3(64-bit)–> Anaconda Navigator”。若可以成功启动 Anaconda Navigator,进入如下界面,则说明安装成功。

  2. “开始(Win) –> Anaconda3(64-bit)–> 右键点击 Anaconda Prompt –> 以管理员身份运行”,在 Anaconda Prompt 中输入 conda list or conda --version,可以查看已经安装的包名或者 conda 版本号。若结果可以正常显示,则说明安装成功。

9 –> 手动配置 Anaconda 环境变量

可能你不太信任 Anaconda Prompt 或者你更加习惯在 windows DOS 下使用命令行,这时你需要为 Anaconda 配置环境变量的。

操作步骤:【控制面板 –> 系统和安全 –> 系统 –> 高级系统设置 –> 环境变量 –> 用户变量 –>PATH】 中添加如下内容:

1
2
3
4
5
# 根据个人安装路径不同需要自行调整
E:\anaconda
E:\anaconda\Scripts
E:\anaconda\Library\bin
E:\anaconda\Library\mingw-w64(有无都可以)

注意:Anaconda 环境变量和系统原生 Python 解释器的优先级问题,推荐优先级:原生 > Anaconda。即 Anaconda Path 要置于原生 Python 之后!!!

之后就可以打开 DOS 命令行提示符界面(最好用管理员模式打开) 输入 conda --version 进行验证了。


For Linux

1 –> Download Package

前往官方下载页面选择 Linux 下载项。你会发现,有两个版本可供选择:Python 3.7(最新 Python3.X) 和 Python 2.7。你需要选择基于 Python 3.7 下载,还是 Python2.7,这决定了安装好的 Anaconda Base(基础)环境中的 Python 版本,毕竟 Anaconda 也是基于 Python 工作的。

目前,Anaconda 官方站点下载页面只支持 Python3.X 版本系列的 Anaconda 下载。

确定下载版本之后,这里我们提供两种方式用于下载适用于 Linux 的 Anaconda 版本:

  1. 官网下载安装包:如果是从官网直接下载安装包,我们需要将下载好的安装包上传到服务器。局域网还好,上传速度一般都比较快。如果服务器是一台阿里云服务器(外网服务器),上传速度是很慢的。
  2. Wget 下载:直接采用 wget 方式直接下载的速度取决于服务器网络带宽。获取下载链接,然后通过 wget 直接下载到服务器。如下(选择用户目录下的 Downloads 目录下载):
1
2
3
4
5
# Python 2.7:
$ wget -c https://repo.anaconda.com/archive/Anaconda2-5.3.1-Linux-x86_64.sh

# Python 3.7:
$ wget -c https://repo.anaconda.com/archive/Anaconda3-5.3.1-Linux-x86_64.sh

下载完成后,Centos/ubuntu 系统 ~/Downloads 下会有一个文件:Anaconda3-5.3.1-Linux-x86_64.sh(或:Anaconda2-5.3.1-Linux-x86_64.sh),它就是我们要安装的 anaconda3(anaconda2)的安装包。


下面我以 “Anaconda3 in Linux 的安装以及配置” 为样例介绍 Anaconda 安装过程(Anaconda2 安装过程同理):

2 –> Anaconda3 in Linux

↓↓↓↓↓↓↓↓ 请一定要注意 ↓↓↓↓↓↓↓↓

安装前请确认 anaconda3 的安装用户(user),root 用户下已安装的 anaconda 会和普通用户再次安装的 anaconda 产生冲突。一般情况下,安装到普通用户下即可;如果在共享服务器使用的话,需要注意 root 中是否已安装;如果共享服务器中所有用户均使用 anaconda,可以统一安装到 root 用户下,然后 “共享” 给普通用户 !!!

共享方法:1)anaconda 安装到普通用户可访问目录;2)普通用户登录时,在 ‘anaconda/bin’ 下执行 conda init bash。具体百度自行解决。

一般,我们会将 anaconda3 的安装包(Anaconda3-5.3.1-Linux-x86_64.sh)下载到当前用户目录下的 Downloads。

假设我们的 anaconda3 安装包存放路径为: ~/Downloads

[1]~/Downloads 路径下执行安装指令:

1
2
3
4
5
6
7
8
9
$ bash ~/Downloads/Anaconda3-5.0.1-Linux-x86_64.sh

# 命令执行可能会产生如下报错(缺乏解压缩包):
PREFIX=/home/cdh/anaconda3
Anaconda3-5.0.1-Linux-x86_64.sh: line 335: bunzip2: command not found
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
# 安装 bzip2 即可解决:
yum install -y bzip2

注意:除非被要求使用 root 权限,否则均选择 Install Anaconda as a user

[2] “In order to continue the installation …review the license agreement.”

安装过程中,你会看到提示 In order to continue the installation process, please review the license agreement.,提示你:“请浏览许可证协议以便继续安装”,点击 【Enter】 查看 “许可证协议”。

在 “许可证协议” 界面将屏幕滚动至底,输入 yes 表示同意许可证协议内容。然后进行下一步。

[3] 设置安装路径

安装过程中,提示 Press Enter to accept the default install location, CTRL-C to cancel the installation or specify an alternate installation directory.,提示你:“按回车键确认安装路径,按 ‘CTRL-C’ 取消安装或者指定安装目录”。

如果接受默认安装路径,则会显示 PREFIX=/home/{~username}/anaconda<2 or 3> 并且继续安装。安装过程大约需要几分钟的时间。

建议:直接接受默认安装路径。

[4] 设置环境变量

安装过程中最后安装器会询问 Do you wish the installer to prepend the Anaconda<2 or 3> install location to PATH in your /home/{~username}/.bashrc ?,提示你:“你希望安装器添加 Anaconda 安装路径在 【/home/{~username}/.bashrc 】文件中吗? ”。建议输入 no 不进行自动配置,随后自己手动配置。

注意:

  • 路径 /home/{~username}/.bash_rc 中 “{username}” 即用户目录,取决于安装用户。

  • 如果输入 “no”,则需要手动添加路径,否则 conda 命令将无法运行。

安装结束后,如何手动添加环境变量? >>>

安装完成后,可以察看 ~/.bashrc 文件末尾是否有追加 anaconda 相关的 export PATH ,如果没有,则执行以下命令:

1
$ echo 'export PATH="~/anaconda3/bin:$PATH"' >> ~/.bashrc

[5] Thank you for installing Anaconda<2 or 3>!

当看到 Thank you for installing Anaconda<2 or 3>!,则说明已经成功完成安装。安装完成后,会产生一个 ~/anaconda3 目录,即 Anaconda 安装目录。

[6] 更新 .bashrc 使其生效

关闭终端,然后再打开终端以使安装后的 Anaconda 启动。或者直接在终端中输入以下命令:

1
$ source ~/.bashrc

[7] 安装验证

可选用以下任意方法:

  1. 在终端中输入命令 condal list or conda --version,如果 Anaconda 被成功安装,则会显示 conda 已经安装的包名和版本号。
  2. 在终端中输入 python,这条命令将会启动 Python 交互解释器界面。如果 Anaconda 被成功安装并且可以运行,则将会在 Python 版本号的右边显示 Anaconda custom (64-bit)。退出 Python 交互界面则输入 exit()quit() 即可。
  3. 提供桌面环境的 Linux 下,在终端中输入 anaconda-navigator。如果 Anaconda 被成功安装,则 Anaconda Navigator 将会被启动。

Conda 包以及虚拟环境管理工具

安装好 Anaconda 后,我们就可以用 Anaconda 中的包管理器 Conda 来创建我们一个个独立的 Python 虚拟环境了。

接下来均是以命令行模式进行操作的,Windows 用户请打开 “Anaconda Prompt”(配置 DOS 环境后可以直接在 DOS 下操作),macOS 和 Linux 用户请打开 “Terminal”(“终端”)进行操作。

Conda

前面我们提过,Anaconda 下的包管理和环境管理是鉴于 conda 命令行工具得以实现的。我们先来看一下 anaconda 安装之后,如何来快速管理 conda:

[1] –> 如何验证 conda 已被安装?

1
2
3
$ conda --version / conda -V
# 或者
$ which conda(Linux)

终端上将会以 conda 版本号的形式显示当前安装 conda 的版本号。如:conda 3.11.0

注意:如果出现错误信息,则需核实是否出现以下情况: 1)使用的用户是否是安装 Anaconda 时的账户;2)是否在安装 Anaconda 之后重启了终端。

[2] –> 如何更新 conda 至最新版本?

1
2
# 升级 conda:
$ conda update conda

执行命令后,conda 将会对版本进行比较并列出可以升级的版本。同时,也会告知用户其他相关包也会升级到相应版本。当较新的版本可以用于升级时,终端会显示 Proceed ([y]/n)?,此时输入 y 即可进行升级。

[3] –> 如何查看 conda 帮助信息?

1
2
3
$ conda --help
#
$ conda -h

[4] –> 如何卸载 conda?

1)For Linux 或 macOS:

1
$ rm -rf ~/anaconda2(anaconda3)

即删除 Anaconda 的安装目录。根据安装的 Anaconda 版本选择相应的卸载命令。

2)For Windows

【控制面板】 → 【添加或删除程序】 –> 选择 【Python X.X (Anaconda)】 –> 点击 【删除程序】 即可。


conda 虚拟环境管理

Anaconda Base 环境 >>>

Base Envs

Window 下 activate 命令(Linxu/Mac 下是 source activate)能将我们引入 anaconda 设定的虚拟环境中,如果你后面什么参数都不加那么会进入 anaconda 自带的 base 环境(anaconda 基础运行环境,anaconda 运行也是需要 Pyhton 支持的)。命令行前面也会多一个(base) 说明当前我们处于的是 base 环境下。

安装配置好 anaconda 之后,通过在终端输入 python,我们可以进入 Python 交互式模式(带有 Anaconda custom (64-bit),已经不是系统原生的 Pyhton 解释器了),这个解释器实质就是 base 环境中的 python 解释器。

我们当然不满足一个 base 环境, 我们更加期望的是更加广阔的天地—可以自由定制的使用多版本虚拟环境


如何创建新环境?

conda 创建虚拟环境的指令如下:

1
2
3
$ conda create --name <env_name> <lists:package_names>
#
$ conda create -n <env_name> <lists:package_names>

命令说明 ⬇⬇⬇⬇⬇

1)env_name:即创建的环境名。建议以英文命名,且不加空格(名称两边不需要加尖括号 “<>”)。

2)package_names:即安装在环境中的包名(名称两边不加尖括号 “<>”),如:python。

1
2
3
4
5
6
7
# 如果要安装指定的版本号,则只需要在包名后面以 “=” 和版本号的形式执行。
# 例如:conda create --name python2 python=2.7
# 释义:创建一个名为 “python2” 的环境,环境中安装版本为 2.7 的 python。

# 如果要在新创建的环境中创建多个包,则直接在 <package_names> 后以空格隔开,添加多个包名即可。
# 例如:conda create -n python3 python=3.5 numpy pandas
# 释义:创建一个名为 “python3” 的环境,环境中安装版本为 3.5 的 python,同时也安装了 numpy 和 pandas。

如何切换环境?

创建好虚拟环境后,如何实现在不同的 conda 虚拟环境进行自由切换呢???

[1] –> 激活环境

1)For Linux 或 macOS –> source activate <env_name>,例如:

1
2
# Linux 下激活名为 python3 的虚拟环境: 
$ source activate python3

2)For Windows –> activate <env_name>,例如:

1
2
# Windows 下激活名为 python3 的虚拟环境: 
$ activate python3

提示信息 ⬇⬇⬇⬇⬇

–> 如果创建环境后安装 Python 时没有指定 Python 的版本,那么将会安装与 Anaconda 版本相同的 Python 版本。即如果安装 Anaconda 第2版,则会自动安装 Python2.x;如果安装 Anaconda 第3版,则会自动安装 Python 3.x。

–> 当成功切换环境之后,在该行行首将以 “(env_name)” 或 “[env_name]” 开头。其中,“env_name” 为切换到的环境名。

[2] –> 退出已激活环境

1)For Linux 或 macOS

1
$ source deactivate

2)For Windows

1
$ deactivate

提示信息 ⬇⬇⬇⬇⬇

–> 当执行退出当前环境命令后,原本行首以 “(env_name)” 或 “[env_name]” 开头的字符将不再显示。


如何查看已创建环境?

当我们同时管理多个版本环境时,很容易忘记环境名称,那么如何查看 anaconda 中已经创建好的环境呢?

1
2
3
4
5
$ conda info --envs

$ conda info -e

$ conda env list

如下显示,星号 “*” 所在行即为当前所在环境:


如何复制已创建环境?

如何基于一个已存在的虚拟环境 Copy 出来一份???命令格式如下:

1
$ conda create --name <new_env_name> --clone <copied_env_name>

命令说明 ⬇⬇⬇⬇⬇

1)copied_env_name:为被 复制/克隆 的环境名(环境名两边不加尖括号 “<>”)。

2)new_env_name:为复制之后新环境的名称(环境名两边不加尖括号 “<>”)。

1
2
# 例如:conda create --name py2 --clone python2
# 释义:克隆名为 “python2” 的环境,克隆后的新环境名为 “py2”。此时,环境中将同时存在 “python2” 和 “py2” 环境,且两个环境的配置相同。

如何删除已创建环境?

命令格式如下:

1
$ conda remove --name <env_name> --all

命令说明 ⬇⬇⬇⬇⬇

–> env_name:为被删除环境的名称(环境名两边不加尖括号 “<>”)。

========================================================================

考虑一下,结合 【复制虚拟环境 && 删除虚拟环境】 如何为一个虚拟环境进行重命名???

提示信息 ⬇⬇⬇⬇⬇

–> 先拷贝重命名,然后删除原有。


如何导入导出当前环境?

如果想要导出当前环境的所有包的信息,以下命令会将包信息存入到 yaml 文件中:

1
$ conda env export > environment.yaml

此时,如果需要重新创建一个相同的虚拟环境时可以用(用上述 yaml 配置文件可创建新的虚拟环境):

1
$ conda env create -f environment.yaml

Conda&&Pip Channels

在介绍 Conda 包管理之前需要介绍一下 Pip && Conda 中的频道概念,有了 Conda&&Pip Channels 你就可以去相应 Channels 所对应的源(远程服务器)上下载各种使用的包。

何为频道(源)

就像家里的电视机,安装 Conda 就相当于买了一台电视机,有了电视不意味着你就能看节目了,你要手动添加频道(信号源)才能看你想看的电视节目。

你可以将 Conda&&Pip 源理解为一个存放了各种 Pip && Conda 包的远程服务器,而 Channels 是用于访问服务器的链接。

Pip && Conda 安装好之后,默认使用的是 Pip && Conda 官方提供的源(Conda –> anaconda.org),这时 Pip && Conda Channels 设置的是官方源对应的链接,当你使用 Pip && Conda 进行包的安装、更新操作时,会从官方源中去搜索、下载你需要的包。

而由于 Pip && Conda 使用的官方源位于外网,网络时好时坏,这可能会导致使用 Pip && Conda 进行包的安装、更新等操作失败的情况:

1
2
3
An HTTP error occurred when trying to retrieve this URL.
HTTP errors are often intermittent, and a simple retry will get you on your way.
ConnectTimeout(MaxRetryError("HTTPSConnectionPool(host='nanomirrors.tuna.tsinghua.edu.cn', port=443): Max retries exceded with url: /anaconda/cloud/linux-64/repodata.json (Caused by ConnectTimeoutError(<requests.packages.urllib3.connecton.VerifiedHTTPSConnection object at 0x7fb6d340dcc0>, 'Connection to nanomirrors.tuna.tsinghua.edu.cn timed out. (connct timeout=9.15)'))",),)

这时就需要更换一个稳定、高速的源来提供良好的网络环境。所幸的是,国内镜像源站点提供了 Pip 和 Anaconda 的镜像源,感谢开源~~~


更换国内源

这里来看如何为 Pip && anaConda 更换稳定、高速的国内源:

Conda 换源

目前,国内常用 Anaconda 源:

清华大学 –> https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
北京外国语大学 –> https://mirrors.bfsu.edu.cn/help/anaconda/
哈尔滨工业大学 –> http://mirrors.hit.edu.cn/#/home
南京邮电大学 –> https://mirrors.njupt.edu.cn/

这里推荐使用清华源(TUNA),来为 Conda 进行换源。提供两种更换清华 Anaconda 源的方法:

1 –> 查看当前源信息

1
2
# 你可以查看当前系统中,conda 源是否是国内源
$ conda config --show-sources

2 –> 配置文件

修改或新创建 ~/.condarc 配置文件添加如下内容(最新):

1
2
3
4
5
6
7
8
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/

清华镜像站推荐的配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

清华大学镜像站推荐的 Anaconda Chanels 设置方法 –> 传送门

3 –> 命令行

通过命令行运行如下命令,也可以将 Anaconda 默认的镜像源换为 清华TUNA 镜像源:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 查看当前 Conda 源配置信息:
$ conda config --show
default_channels:
- https://repo.anaconda.com/pkgs/main
- https://repo.anaconda.com/pkgs/r
- https://repo.anaconda.com/pkgs/msys2

# 添加清华(TUNA) 镜像源:
$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
$ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
$ conda config --set show_channel_urls yes

# 删除错误 Chanels:
$ conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r

命令行设置后如何 快速换回默认源 ⬇⬇⬇⬇⬇

1
$ conda config --force --remove-key channels

Pip 换源

国内常用源 Pip 源:

清华大学 –> https://pypi.tuna.tsinghua.edu.cn/simple
阿里云 –> http://mirrors.aliyun.com/pypi/simple/
中国科技大学 –> https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣 –> http://pypi.douban.com/simple/

设置前,你可以先查询一下,当前系统中的 pip 源是否是国内源 >>>>

1
2
3
4
# 可以当前我已经设置过了 aliyun 源了:
$ pip config list
global.index-url='http://mirrors.aliyun.com/pypi/simple/'
install.trusted-host='mirrors.aliyun.com'

以设置阿里 Pip 源为例(推荐),加速 pip 速度:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
### For Linux ###
$ mkdir ~/.pip
$ cat > ~/.pip/pip.conf << EOF
>[global]
>index-url=http://mirrors.aliyun.com/pypi/simple/
>[install]
>trusted-host=mirrors.aliyun.com
>disable-pip-version-check = true
>timeout=6000
>EOF

### For Windows ###
$ mkdir ~/pip
$ cat > ~/pip/pip.ini << EOF
>[global]
>index-url=http://mirrors.aliyun.com/pypi/simple/
>[install]
>trusted-host=mirrors.aliyun.com
>disable-pip-version-check = true
>timeout=6000
>EOF

你可以看到,是在用户目录下生成了一个 pip.conf Pip 配置文件,用于设置 Pip 源。想要恢复 Pip 源,删除 pip.conf 配置文件即可。


conda 包管理

conda 除了多虚拟环境管理功能之外,还具有包管理功能(类似于 pip)。

查找可供安装的包版本?

如何查找当前 Channel(Conda 源)中可供安装的软件包版本???

精确查找
1
$ conda search --full-name <package_full_name>

命令说明 ⬇⬇⬇⬇⬇

  • –full-name:为精确查找的参数。

  • package_full_name:是被查找包的全名(包名两边不加尖括号 “<>”)。

例如:conda search --full-name python,即查找全名为 “python” 的包有哪些版本可供安装。


模糊查找
1
$ conda search <text>

命令说明 ⬇⬇⬇⬇⬇

  • text:是查找含有此字段的包名(此字段两边不加尖括号 “<>”)。

例如:conda search py,即查找含有 “py” 字段的包,有哪些版本可供安装。


如何获取已安装包信息?

查看当前虚拟环境中已安装软件包的信息:

1
$ conda list

如何安装第三方包?

安装第三方包可分为以下场景:

[1] –> 在指定环境中安装包

1
$ conda install --name <env_name> <package_name>

命令说明 ⬇⬇⬇⬇⬇

  • env_name:即将包安装的指定环境名(环境名两边不加尖括号 “<>”)。

  • package_name:即要安装的包名(包名两边不加尖括号“<>”)。

例如:conda install --name python2 pandas,即在名为 “python2” 的环境中安装 pandas 包。

[2] –> 在当前环境中安装包

1
$ conda install <package_name>

命令说明 ⬇⬇⬇⬇⬇

  • package_name:即要安装的包名(包名两边不加尖括号 “<>”)。

  • 执行命令后在当前环境中安装包。

例如:conda install pandas,即在当前环境中安装 pandas 包。


[3] –> 使用 pip 安装第三方包

–> 使用场景

当使用 conda install 无法进行安装时,可以使用 pip 进行安装。例如:see 包。

–> 命令

1
$ pip install <package_name>

–> 注意

  1. pip 只是包管理器,无法对环境进行管理。因此如果想在指定环境中使用 pip 进行安装包,则需要先切换到指定环境中,再使用 pip 命令安装包。

  2. pip 无法更新 python,因为 pip 并不将 python 视为包。

  3. pip 可以安装一些 conda 无法安装的包;conda 也可以安装一些 pip 无法安装的包。因此当使用一种命令无法安装包时,可以尝试用另一种命令。


[4] –> 从 Anaconda.org 安装第三方包

Anaconda.org 官方网址 –> 传送门

–> 使用场景

当使用 conda install 无法进行安装时,可以考虑从 Anaconda.org 中获取安装包的命令,并进行安装。

–> 注意

  1. 从 Anaconda.org 安装包时,无需注册;

  2. 在当前环境中安装来自于 Anaconda.org 的包时,需要通过输入要安装的包在 Anaconda.org 中的路径作为获取途径(channel)。

查询路径的方式如下 >>>>>

进入 Anaconda Cloud 官方网址,在页面 “Anaconda Cloud” 的上方搜索框中输入要安装的包名,–> search。

搜索结果中有数以千计的包可供选择,此时点击 “Downloads” 可根据下载量进行排序,最上面的为下载最多的包,(图中以搜索 pymysql 包为例)。选择满足需求的包或下载量最多的包,点击包名:

复制 To install this package with conda run:下方的命令,并粘贴在终端中执行即可完成安装:


如何卸载已安装第三方包?

[1] –> 卸载指定环境中的包

1
$ conda remove --name <env_name> <package_name>

命令说明 ⬇⬇⬇⬇⬇

  • env_name:即卸载包所在指定环境的名称(环境名两边不加尖括号 “<>”)。

  • package_name:即要卸载包的名称(包名两边不加尖括号 “<>”)。

例如:conda remove --name python2 pandas,即可卸载名为 “python2” 中的 pandas 包。

[2] –> 卸载当前环境中的包

1
$ conda remove <package_name>

命令说明 ⬇⬇⬇⬇⬇

  • package_name:即要卸载包的名称(包名两边不加尖括号“<>”)。

  • 执行命令后即在当前环境中卸载指定包。

例如:conda remove pandas,即可在当前环境中卸载 pandas 包。


如何更新已安装第三方包?

[1] –> 更新所有包

1
2
3
$ conda update --all
#
$ conda upgrade --all

建议:在安装 Anaconda 之后执行上述命令更新 Anaconda 中的所有包至最新版本,便于使用。

[2] –> 更新指定包

1
2
3
$ conda update <package_name>
#
$ conda upgrade <package_name>

注意 ⬇⬇⬇⬇⬇

  • package_name:为指定更新的包名(包名两边不加尖括号 “<>”)。

  • 更新多个指定包,则包名以空格隔开,向后排列。

例如:conda update pandas numpy matplotlib,即可更新 pandas、numpy、matplotlib 等包。


深入了解 Anaconda

了解了以上内容,或许你会觉得奇怪为啥 Anaconda 能做这些事, 他的原理到底是什么?

首先,我们来看看 Anaconda in Windows 的安装目录:

这里只截取了一部分,其实这里就是我们前面介绍的 base 环境。里面有着一个基本的 python 解释器(你可以找找 python.exe),Lib 里面也有 base 环境下的各种包文件。

那我们自己创建的环境去哪了呢, 我们可以看见一个 envs, 这里就是我们自己创建的各种虚拟环境的入口, 点进去看看:

可以发现我们之前创建的所有虚拟环境目录就在下面, 再点进去:

哎?!!这不就是一个标准的 Python 环境目录吗?

这么一看, Anaconda 所谓的创建虚拟环境其实就是安装了一个真实的 Python 环境, 只不过我们可以通过 activateconda 等命令去随意的切换我们当前的 Python 环境, 用不同版本的解释器和不同的包环境去运行 Python 脚本,很巧妙啊~~~


Anaconda 生态环境初体验

至此,你已经掌握了 Anaconda 的日常使用方法。下面我会补充一部分内容用于提升使用体验(推荐阅读):

Conda In JetBrains PyCharm

在工作环境中我们会选择在集成开发环境(IDE)去编码,正如我们前面推荐的 PyCharm,而 PyCharm 也能很方便的配置和 anaconda 的虚拟环境结合使用。

在 【File】 –> 【Settings】 –> 【Project:XXX】 –> 【Project Interpreter】 里面修改 Project Interpreter,点击齿轮标志再点击 【Add Local】 为你某个环境的 python.exe 解释器就行了:

比如你要在 DeepLearning 环境中编写程序, 那么就修改为 E:\\Anaconda3\envs\DeepLearning\python.exe。同时可以看到这时候下面的依赖包也变成了 DeepLearning 环境中的包了。接下来我们就可以在 Pycharm 中愉快的编码了。


Anaconda In Windows

Windows 环境下,按下 【Win】,调出 Windows 开始菜单。可以看到 “最近添加” 的:Anaconda3(64-bit) 文件夹。

Anaconda3(64-bit)中包含:Anaconda Navigator、Anaconda Prompt、Jupyter Notebook 以及 Spyder 等菜单项。下面我们来看如何使用这些功能项:

Anaconda Prompt

打开 Anaconda Prompt,这个窗口和 DOS 窗口一样的,输入命令就可以控制和管理 Python 环境。可以将其看作一个 Anaconda 内嵌的用于执行 conda 命令行指令的工具。最常用的是 conda 命令,前面我们介绍的所有 conda 命令此软件都集成了,你可以直接用。点开的话如下图:

进入后你会发现我们处于 Anaconda 的 base 环境中。

同时,安装完 anaconda,就相当于默认安装了 Python、IPython、集成开发环境 Spyder、部分包等等。你可以在 Windows 下的 cmd 下启动相应组件。以启动 IPython 为例:


Anaconda Navigator

从其名称(Anaconda 导航员)即可看出,它应该是一个用于帮助用户快速使用 Anaconda 的工具。确实,Anaconda Navigator 是用于管理工具包和环境的图形用户界面。

同时支持快速启动 Anaconda 内嵌的一些工具:JupyterLab、Jupyter Notebook、IPython、Spyder 等。


Jupyter Notebook

Jupyter Notebook 是基于 web 的交互式计算环境。支持富文本,可以编辑易于人们阅读的文档。所以常用于展示数据分析的过程(强烈推荐使用)。

我们还可以为远程服务器配置 Jupyter Notebook 服务后,实现远程调用(一方面可以在图形化界面进行开发编程;另一方面免除了需要在本地搭建搭建一套和服务器相同开发环境的问题),体验度极高!!!


JupyterLab

你可以认为 Jupyter Lab 是 Jupyter Notebook 的升级版,为用户提供了更多的功能,JupyterLab 最终将取代经典的 Jupyter Notebook。

打开 JupyterLab 会在默认浏览器打开 http://localhost:8888/lab 这样一个东东,这里可以打开 Jupyter Notebook、Python 解释器以及 终端(Terminal)等等….

我们可以打开 【Anaconda Navigator】 -> 【Launch jupyterlab】 ,也可以直接在浏览器输入 http://localhost:8888/lab (可以保存为书签)。如果是布置在云端,可以输入服务器域名(IP),是不是很爽?


Spyder

Spyder 一个使用 Python 语言、跨平台的、科学运算集成开发环境(Anaconda 内嵌的一款 IDE)。点击 Anaconda Navigator >>> Spyder,第一次启用,会初始化,耐心等待一段时间……加载完成,界面如图:

Spyder 编辑器,没有安装 IDE 的同学可以直接选用这款编辑器来编写代码,它最大的优点就是模仿 MATLAB 的“工作空间”。spyder.exe 放在安装目录下的 Scripts 里面,可以将其发送到桌面快捷方式进行使用。并且 Spider 支持远程服务器链接。


Orange3

交互式数据可视化,通过巧妙的数据可视化执行简单的数据分析。探索统计分布,箱形图和散点图,或深入了解决策树,层次聚类,热图,MDS和线性投影。即使您的多维数据也可以在 2D 中变得合理,特别是在智能属性排名和选择方面。

据说:老师和学生都喜欢它。在教授数据挖掘时,我们喜欢说明而不是仅仅解释。而橙色很棒。Orange 在世界各地的学校,大学和专业培训课程中使用,支持数据科学概念的实践培训和视觉插图。甚至还有专门为教学设计的小部件。

附加组件扩展功能。使用 Orange 中可用的各种附加组件从外部数据源挖掘数据,执行自然语言处理和文本挖掘,进行网络分析,推断频繁项目集并执行关联规则挖掘。此外,生物信息学家和分子生物学家可以使用Orange通过差异表达对基因进行排序并进行富集分析。


Relevant Issues

Anaconda 使用过程中遇到的各种问题以及其解决思路:

终端默认激活 Base 环境

↓↓↓↓↓↓ 问题描述 ↓↓↓↓↓↓

Windows 系统中,Anaconda 安装时没有选择自动配置环境变量,随后手动设置了环境变量,并让其优先级低于系统原生的 Python,当时的目的是为了不让 Anaconda Base 环境影响原生系统 Python 的使用。

后来习惯了使用 Anaconda Prompt,为了在 PowerShell && CMD && VS Code Terminal 中自动激活 Conda Base 环境,使用了如下命令:

1
2
3
4
5
# PowerShell
$ conda init powershell

# CMD
$ conda init cmd.exe

后来在 PowerShell && CMD 中使用系统原生 Python 时很容易就会用错为 Conda Base,故想取消这一设置!!!

经过查看官方文档和查阅相关资料,这里提供两种方法解决方法:

[1] >>> Conda Config

通过在命令行中关闭关于 Conda 自动激活 Base 环境(auto_activate_base)的设置,先查看以下其默认设置:

1
2
$ conda config --show | findstr "auto_activa*"
auto_activate_base: True

可以看到是开启的。然后,使用 conda config --set 来修改:

1
2
3
4
$ conda config --set auto_activate_base false

$ conda config --show | findstr "auto_activa*"
auto_activate_base: False

| ================================================== Split Line =============================================== |

[2] >>> 配置文件

同时,你可以通过找到并修改 Conda 的配置文件(.condarc),来关闭终端中 Base 环境的自动激活。

Conda 配置文件路径:Windows >>> C:\users\<username>\;Linux >>> /home/<username>/

默认情况下,Conda 配置文件内容如下(源信息):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
deepmodeling: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/

你可以追加如下信息,以关闭 Base 环境的自动激活:

1
auto_activate_base: false

事实上,通过 conda config --set 命令的方式来设置的话,会在 Conda 配置文件中自动添加上述内容。


Author

Waldeinsamkeit

Posted on

2018-01-03

Updated on

2024-02-21

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.

Comments

You forgot to set the shortname for Disqus. Please set it in _config.yml.