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

   此外,Python 的强大之处在于它的应用领域范围之广,遍及人工智能、科学计算、Web 开发、系统运维、大数据及云计算、金融、游戏开发等。实现其强大功能的前提就是 Python 具有数量庞大且功能相对完善的标准库和第三方库。通过对库的引用,能够实现对不同领域业务的开发。然而,正是由于库的数量庞大,对于管理这些库以及对库作及时的维护成为既重要但复杂度又高的事情。

什么是 Anaconda

   Anaconda 就是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本。Anaconda 包含了 conda、Python 在内的超过 180 个科学包及其依赖项。

Anaconda具有如下特点:

  • 开源
  • 安装过程简单
  • 高性能使用 Python 和 R 语言
  • 免费的社区支持

其特点的实现主要基于 Anaconda 拥有的:

  • conda包
  • 环境管理器
  • 1000+ 开源库

Anaconda 与其它工具的区别

Anaconda

Anaconda 是一个包含 180+ 的科学包及其依赖项的发行版本。其包含的科学包包括:conda、numpy、scipy、ipython notebook 等。

conda

  • conda 是包及其依赖项和环境的管理工具。
  • 适用语言: Python、R、Ruby、Lua、Scala、Java、JavaScript、C/C++、FORTRAN。
  • 适用平台: Windows、MacOS、Linux
  • conda 为 Python 项目而创造,但可适用于上述的多种语言。
  • conda 包和环境管理器包含于 Anaconda 的所有版本当中。

用途:

  • 快速安装、运行和升级包及其依赖项。
  • 在计算机中便捷地创建、保存、加载和切换环境。

如果你需要的包要求不同版本的 Python,你无需切换到不同的环境,因为 conda 同样是一个环境管理器。仅需要几条命令,你可以创建一个完全独立的环境来运行不同的 Python 版本,同时继续在你常规的环境中使用你常用的 Python 版本。

pip

  • pip 是用于安装和管理软件包的包管理器。
  • pip 编写语言: Python

Python 中默认安装的版本:

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

virtualenv

  • 用于创建一个独立的 Python 环境的工具。
  • virtualenv 将会为它自己的安装目录创建一个环境,这并不与其他 virtualenv 环境共享库;同时也可以选择性的不连接已安装的全局库。

解决问题:

  • 当一个程序需要使用 Python 2.7 版本,而另一个程序需要使用 Python 3.6 版本,如何同时使用这两个程序?
  • 如果将所有程序都安装在系统下的默认路径,如: /usr/lib/python2.7/site-packages,当不小心升级了本不该升级的程序时,将会对其他的程序造成影响。
  • 如果想要安装程序并在程序运行时对其库或库的版本进行修改,都会导致程序的中断。
  • 在共享主机时,无法在全局 site-packages 目录中安装包。

pip 与 conda 比较


依赖项检查

pip

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

conda

  • 列出所需其他依赖包
  • 安装包时自动安装其依赖项
  • 可以便捷地在包的不同版本中自由切换

环境管理

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

对系统自带 Python 的影响

  • pip: 在系统自带 Python 中包的 "更新/回退版本/卸载" 将影响其他程序。
  • conda: 不会影响系统自带 Python

适用语言

  • pip: 仅适用于 Python
  • conda: 适用于 Python、R、Ruby、Lua、Scala、Java、JavaScript、C/C++、FORTRAN

conda 与 pip、virtualenv 的关系

conda 结合了 pip 和 virtualenv 的功能。

安装 Anaconda

图形界面安装

  • 前往官方下载页面下载。有两个版本可供选择: Python 3.x 和 Python 2.7。选择版本之后点击 "64-Bit Graphical Installer" 进行下载。

Anaconda01

  • 完成下载之后,双击下载文件,点击 "继续" 直至安装结束。

Anaconda02

  • 在 Mac 的 Launchpad 中找到名为 "Anaconda-Navigator" 的图标,点击打开。

  • 若 "Anaconda-Navigator" 成功启动,则说明真正成功地安装了 Anaconda;如果未成功,请务必仔细检查之前的安装步骤。

  • "Anaconda-Navigator" 中已经包含 "Jupyter Notebook"、"Jupyterlab"、"Qtconsole" 和 "Spyder"

Anaconda03

管理 conda

接下来均是以命令行模式进行介绍,Windows 用户需打开 "Anaconda Prompt"; MacOS 和 Linux 用户需打开 "Terminal" 进行操作。

验证 conda 已被安装

conda --version

conda 4.9.2

更新 conda 至最新版本

conda update conda

执行命令后,conda 将会对版本进行比较并列出可以升级的版本。同时,也会告知用户其他相关包也会升级到相应版本。

当较新的版本可以用于升级时,终端会显示 "Proceed ([y]/n)?",此时输入 "y" 即可进行升级。

查看 conda 帮助信息

conda --help

卸载 conda

rm -rf ~/anaconda3

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

管理环境

创建新环境

conda create --name <env_name> <package_names>

注意:

  • <env_name> 即创建的环境名。建议以英文命名,且不加空格,名称两边不加尖括号 "<>"
  • <package_names> 即安装在环境中的包名。名称两边不加尖括号 "<>"
  • 如果要安装指定的版本号,则只需要在包名后面以 "=" 和版本号的形式执行。如: conda create --name python2 python=2.7,即创建一个名为 "python2" 的环境,环境中安装版本为 Python 2.7
  • 如果要在新创建的环境中创建多个包,则直接在 <package_names> 后以空格隔开,添加多个包名即可。如 conda create -n python3 python=3.5 numpy pandas,即创建一个名为 "python3" 的环境,环境中安装版本为 Python 3.5,同时也安装了 NumPy 和 Pandas 包
  • --name 同样可以替换为 "-n"

提示:

  • 默认情况下,新创建的环境将会被保存在 /Users/<user_name>/anaconda3/env 目录下,其中,<user_name> 为当前用户的用户名

切换环境

source activate <env_name>

提示:

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

  • 当成功切换环境之后,在该行行首将以 "(env_name)" 或 "[env_name]" 开头。其中,"env_name" 为切换到的环境名。如: 在 MacOS 系统中执行 source active python2,即切换至名为 "python2" 的环境,则行首将会以 "(python2)" 开头

退出环境至 root

source deactivate

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

显示已创建环境

conda info --envs

Anaconda04

结果中星号 "*" 所在行即为当前所在环境。MacOS 系统中默认创建的环境名为 "base"。

复制环境

conda create --name <new_env_name> --clone <copied_env_name>
  • <copied_env_name> 即为被 "复制/克隆" 的环境名。环境名两边不加尖括号 "<>"
  • <new_env_name> 即为复制之后新环境的名称。环境名两边不加尖括号 "<>"
  • 如: conda create --name py2 --clone python2,即克隆名为 "python2" 的环境,克隆后的新环境名为 "py2"。此时,环境中将同时存在 "python2" 和 "py2" 环境,且两个环境的配置相同

删除环境

conda remove --name <env_name> --all
  • <env_name> 为被删除环境的名称。环境名两边不加尖括号 "<>"

图形界面管理

Anaconda_Install08

管理包

查找可供安装的包版本


精确查找

conda search --full-name <package_full_name>
  • --full-name 为精确查找的参数
  • <package_full_name> 是被查找包的全名。包名两边不加尖括号 "<>"
  • 例如: conda search --full-name python 即查找全名为 "python" 的包有哪些版本可供安装

模糊查找

conda search <text>
  • <text> 是查找含有此字段的包名。此字段两边不加尖括号 "<>"
  • 例如: conda search py 即查找含有 "py" 字段的包,有哪些版本可供安装

当前环境中已安装的包

conda list

执行上述命令后将在终端显示当前环境已安装包的包名及其版本号。

安装包


在指定环境中安装包

conda install --name <env_name> <package_name>
  • <env_name> 即将包安装的指定环境名。环境名两边不加尖括号 "<>"
  • <package_name> 即要安装的包名。包名两边不加尖括号 "<>"
  • 例如: conda install --name python2 pandas 即在名为 "python2" 的环境中安装 pandas 包

在当前环境中安装包

conda install <package_name>
  • <package_name> 即要安装的包名。包名两边不加尖括号 "<>"
  • 执行命令后在当前环境中安装包
  • 例如: conda install pandas 即在当前环境中安装 pandas 包

使用 pip 安装包

当使用 conda install 无法进行安装时,可以使用 pip 进行安装。

pip install <package_name>
  • <package_name> 为指定安装包的名称。包名两边不加尖括号 "<>"
  • 例如: pip install see 即安装 see 包

注意:

  • pip 只是包管理器,无法对环境进行管理。因此如果想在指定环境中使用 pip 进行安装包,则需要先切换到指定环境中,再使用 pip 命令安装包
  • pip 无法更新python,因为 pip 并不将 Python 视为包
  • pip 可以安装一些 conda 无法安装的包;conda 也可以安装一些 pip 无法安装的包。因此当使用一种命令无法安装包时,可以尝试用另一种命令

从 Anaconda.org 安装包

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

  • 在浏览器中输入 http://anaconda.org
  • 在新页面 "Anaconda Cloud" 的上方搜索框中输入要安装的包名,然后点击 "搜索" Anaconda05
  • 点击 "Downloads" 可根据下载量进行排序,选择最上面下载最多的包并点击包名 Anaconda06
  • 复制 "To install this package with conda run:" 下方的命令,并粘贴在终端中执行 Anaconda07
  • 完成安装

卸载包


卸载指定环境中的包

conda remove --name <env_name> <package_name>
  • <env_name> 即卸载包所在指定环境的名称。环境名两边不加尖括号 "<>"
  • <package_name> 即要卸载包的名称。包名两边不加尖括号 "<>"
  • 例如: conda remove --name python2 pandas 即卸载名为 "python2" 环境中的 pandas 包

卸载当前环境中的包

conda remove <package_name>
  • <package_name> 即要卸载包的名称。包名两边不加尖括号 "<>"
  • 执行命令后即在当前环境中卸载指定包
  • 例如: conda remove pandas 即在当前环境中卸载 pandas 包

更新包


更新所有包

conda update --all

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

更新指定包

conda update <package_name>
  • <package_name> 为指定更新的包名。包名两边不加尖括号 "<>"
  • 更新多个指定包,则包名以空格隔开,向后排列。如: conda update pandas numpy matplotlib 即更新 pandas、numpy、matplotlib 包

参考资料

https://www.jianshu.com/p/62f155eb6ac5

https://www.cnblogs.com/caiyutong/p/7002764.html

原创文章,转载请注明出处:http://www.opcoder.cn/article/39/