Anaconda Q&A
Anaconda 是什么?
- Anaconda(官方网站) 是一种 Python 语言的开源发行版,等于 Python + 第三方软件包 + 包管理。
- Anaconda 用于进行大规模数据处理、预测分析和科学计算,致力于简化包的管理和部署。
- Anaconda 使用软件包管理系统 Conda(官方网站) 进行包管理。
Anaconda 可以做什么?
Anaconda 是用于部署机器学习和数据科学开发环境的最佳工具。
- Anaconda 可以为每一个 Python 应用创建一个独立的运行环境,包括:指定版本的 Python、依赖包、环境变量等。例如:Tensorflow 可以运行在 Python 2.7 和 Python 3.6 下,通过 Anaconda 可以创建两个 Tensorflow 的运行环境,分别对应 Python 2.7 和 Python 3.6 版本。
- Anaconda 包含了 1,500+ 个用于数据科学的最流行的 Python,R 和 Scala 软件包,避免了安装、更新、维护数据科学软件包的麻烦。
- Anaconda 具有跨平台的特性,可以在 Windows、Linux 和 Mac OS 上运行。
如何获得 Anaconda ?
Anaconda 是开源软件,可以通过官方、第三方镜像、第三方发行来获得。
- Anaconda 的官方下载。
- Anaconda 的中国镜像可以在网络条件不好的情况下,提高下载速度。目前,中国的主力镜像是 清华开源软件镜像 和 中科大开源软件镜像。
- Microsoft 已经将 Anaconda 集成到 Visual Studio 中(Visual Studio 官方网站)- vs 已经逐渐演变成了 代码编辑器 + 开发工具集 + 包管理的集成工具,通过安装 vs 2017 中的 Python 开发环境,就可以自动安装 Anaconda。
Anaconda 中包含了什么?
- Anaconda 已经包含了 Python 的最新版本,因此无须单独安装 Python。
- Anaconda 包含了 Conda 包管理软件。
Anaconda 包含了以下软件 | |
---|---|
1. Numpy http://www.numpy.org/ N 维数组的数值计算。 2. Scipy https://scipy.org/ Python 的科学计算库。 3. Matplotlib https://matplotlib.org/ Python 的 2D 绘图库。 4. Pandas http://pandas.pydata.org/ 强大的 Python 数据结构、数据分析工具箱。 5. Seaborn http://seaborn.pydata.org/ Python 的统计学绘图库。 |
6. Bokeh http://bokey.pydata.org/ 可视化、交互式 Web 库。 7. Scikit-Learn https://scikit-learn.org/stable/ 用于机器学习和数据挖掘的 Python 模块。 8. NLTK http://www.nltk.org/ 自然语言处理工具箱。 9. Jupyter Notebook https://jupyter.org/ 允许您创建和共享包含实时代码,方程式,可视化和说明文本的文档的Web应用程序。 10. R essentials 可以使用 “conda install r-essentials” 安装 80 个最常用的数据科学 R 软件包。 |
Miniconda 是什么?
Miniconda 是 Anaconda 的精简安装包,它基本上只包括:Python、Conda、及其依赖包。它比 Anaconda 安装包小得多。用户可以通过 “conda install PACKAGENAME” 命令,来从头构建自己的环境。
Anaconda 官方用户指南
安装 Anaconda
下载 Windows 版本,一路 next 搞定。有疑问,可以参考官方安装指南。
注意!
Anaconda 对安装目录有以下要求:
- 目录名不能包含空格,例如:不能使用 “C:\Program Files\” 目录。
- 目录名不能包含 Unicode 字符,例如:不能使用 “C:\中文路径” 之类的目录。
校验是否正确安装 Anaconda
Anaconda Navigator
通过运行 “Anaconda Navigator” 程序,来检验 Anaconda 是否被正确安装。只要 Navigator 能正确开启,则说明正确安装了 Anaconda。
Conda
通过在 “Anaconda Prompt” 中执行 “conda” 命令,来检验 Anaconda 是否被正确安装。
- 执行
conda list
命令,将显示已安装的 package name 和 version。 - 执行
python
命令,开启 Python shell;执行quit()
命令,退出 Python shell。 - 执行
anaconda-navigator
命令,将开启 Anaconda Navigator。
卸载 Anaconda
在 Windows “应用和功能” 中,Anaconda 3 很奇怪的没有显示为 “Anaconda 3”,而被显示为 “Python 3.x.x (Anaconda3 xxxx.xx 64bit)”。
更新 Anaconda
打开 “Anaconda Prompt”,使用以下指令,可以更新 Anaconda 到最新版本。
conda update conda
conda update anaconda
开始使用 Anaconda
Anaconda Navigator 和 Anaconda Prompt
Anaconda 提供了两种管理方式,它们都可以完成软件包和工作环境管理的任务:
- 图形化管理:Anaconda Navigator
- 命令行管理:Anaconda Prompt
作为一个程序员,使用 “Anaconda Prompt” 是最自(装)然(B)的选择。
第一个 Python 程序:Hello Anaconda!
- 打开 “Anaconda Prompt”
- 运行 python
- 键入 print("Hello Anaconda!")
- 键入 exit()
(base) C:\Users\administrator>python
Python 3.7.1 (default, Dec 10 2018, 22:54:23) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Hello Anaconda!")
Hello Anaconda!
>>> exit()
(base) C:\Users\administrator>
开始使用 Conda
Conda 是 Anaconda 的包管理和环境管理系统。
- 包管理:对第三方软件包的搜索、安装、更新、卸载。
- 环境管理:为 Python 应用创建、更改、删除独立的运行环境。
Conda 自学终极大法
Conda Help | |
---|---|
显示帮助 | *conda --help* |
显示某条命令(COMMAND)的帮助 | conda COMMAND --help |
Conda 的自我管理
Managing Conda | |
---|---|
显示当前 Conda 版本 | conda --version |
显示当前 Conda 的详细信息 | conda info |
更新 Conda 到最新版本 | conda update conda |
更新 Anaconda 到最新版本 | conda update anaconda |
环境管理
Work with Environments | |
---|---|
列出所有可用的工作环境 | conda info --envs |
创建一个新的工作环境。环境名:ENVNAME,并安装 Python 3.6,PKG1 7.6 版以上,及 PKG2 | conda create --name ENVNAME python=3.6 "PKG1>=7.6" PKG2 |
按命名激活工作环境 | conda activate ENVNAME |
按目录激活工作环境 | conda activate /path/project-dir |
停用当前工作环境 | conda deactivate |
列出激活环境中,安装的所有软件包及其版本 | conda list |
列出命名环境中,安装的所有软件包及其版本 | conda list --name ENVNAME |
列出激活环境中,所有的修订 | conda list --revisions |
列出命名环境中,所有的修订 | conda list --name ENVNAME --revisions |
将环境回滚到指定的修订版本 | conda install --name ENVNAME --revision REV_NUMBER |
删除一个工作环境 | conda remove --name ENVNAME --all |
环境共享
环境共享主要用于备份、迁移工作环境。
Sharing Environments | |
---|---|
克隆一个工作环境 | conda create --clone ENVNAME --name NEWENV |
将一个工作环境导出为 YAML 文件,该文件可以在 Windows、Mac OS、和 Linux 上读取 | conda env export --name ENVNAME > envname.yml |
从一个 YAML 文件创建一个工作环境 | conda env create --file envname.yml |
从当前目录的 environment.yml 文件创建一个工作环境 | conda env create |
导出某个 OS 下,各软件包精确版本的工作环境 | conda list --explicit > pkgs.txt |
创建一个各软件包精确版本的工作环境 | conda create --name NEWENV --file pkgs.txt |
管理 Channels
Channels 是什么?
Channel 在 Conda 中,类似与其它包管理软件的 “源”(Source)或 “仓库”(Repo)的概念。它是由 Anaconda 官方或第三方维护的软件存储库,用户可以检索、下载、安装软件存储库中的软件包。
- Anaconda 官方提供了 Defaults Channel,安装 Anaconda 时已经设置好了。
- 为了提高下载速度,很多第三方镜像了 Anaconda Distribution。
- Anaconda 国内的镜像:清华大学开源软件镜像 和 中科大开源软件镜像。
- 可以通过搭建私有 Channel 的方式,发布自己的软件包。
添加、删除 Mirrors Channel
添加清华源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
添加中科大源
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
删除镜像源
conda config --remove-key channels
2019/02/27 实测:
- 清华大学源速度并不比官方源速度快。
- 中科大源则安装 vs2015_runtime 时报错。
Channels 的选择逻辑
不同的 Channels 可能包含相同的软件包(例如:Mirrors Channel 与 Defaults Channel 就包含了完全相同的软件包),因此 Conda 需要决定从哪个 Channel 中下载、安装软件包。
最新版 Conda( 4.1 版之后),引入了优先级(channel priority)的概念,添加源的命令也同步修订为了两条:
- 在 Channel list 的顶部添加源(添加最高优先级的源):
conda config --prepend channels new_channel
-
--prepend channels 命令等同于 --add channels 命令:
conda config --add channels new_channel
- 在 Channel list 的底部添加源(添加最低优先级的源):
conda config --append channels new_channel
对于同名软件包,Conda 按照以下的逻辑来选择安装次序:
- 对软件包,按照源的优先级从高到低排序;
- 同一个源内,软件包按照版本号从高到低排序;
- 同一个源内,相同版本号的软件包,按照 build number 从高到低排序;
- 经过以上排序后,安装排序表中第一个符合安装选项的软件包。
Tips:
- 用于加速的镜像源,应该放在 Channel list 的顶部(最高优先级),以覆盖 Defaults Channel,才能起到加速的作用。
- 发布第三方或自有的软件包,应该将源添加到 Channel list 的底部(最低优先级),保证不会覆盖 Defaults Channel。
安装、卸载、更新软件包
Using Packages and Channels | |
---|---|
从当前配置的所有源(可以通过 conda info 命令查看)中搜索 Package。 |
conda search PKGNAME |
在当前工作环境中,安装 Package | conda install PKGNAME |
在指定工作环境中,安装 Package | conda install --name ENVNAME PKGNAME |
安装确切版本的 Package(例如:3.1.4) | conda install PKGNAME=3.1.4 |
安装不低于指定版本的 Package(例如:3.1+) | conda install "PKGNAME>=3.1" |
安装子版本最新的 Package (例如:3.1.x) | conda install PKGNAME=3.1" |
删除指定工作环境中的 Package | conda uninstall --name ENVNAME PKGNAME |
更新指定工作环境中的所有 Package | conda update --name ENVNAME --all |