51Testing软件测试论坛

标题: Anaconda简介 [打印本页]

作者: 小浩321    时间: 2019-4-9 15:27
标题: Anaconda简介
Anaconda 是专门为了方便使用 Python 进行数据科学研究而建立的一组软件包,涵盖了数据科学领域常见的 Python 库,并且自带了专门用来解决软件环境依赖问题的 conda 包管理系统。主要是提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。Anaconda利用工具/命令conda来进行package和environment的管理,并且已经包含了Python和相关的配套工具。

conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理。包管理与pip的使用类似,环境管理则允许用户方便地安装不同版本的python并可以快速切换。

Anaconda则是一个打包的集合,里面预装好了conda、某个版本的python、众多packages、科学计算工具等等,所以也称为Python的一种发行版。其实还有Miniconda,它只包含最基本的内容——python与conda,以及相关的必须依赖项,对于空间要求严格的用户,Miniconda是一种选择。

conda将几乎所有的工具、第三方包都当做package对待,甚至包括python和conda自身!因此,conda打破了包管理与环境管理的约束,能非常方便地安装各种版本python、各种package并方便地切换。


安装Anaconda

注意安装后系统默认的 Python 会变为随 Anaconda 所安装的 Python 版本。Anaconda 安装后会在系统中创建一个默认的 Python 环境,在命令行下输入 conda list 就可以列出默认环境中已安装的所有包。

一般来说,最好在默认环境下更新包,而对于具体的项目只要项目能够正常运行则无需主动更新,除非需要使用新版本包中的特定功能,当项目开发完成后,可以使用 conda env export > environment.yaml 将当前的环境导出为配置文件,这样在其他机器上就可以使用 conda env create -f environment.yaml 来基于该配置文件方便的重建项目环境。


注意通常情况下仅在默认环境下更新包:
  1. conda upgrade conda
  2. conda upgrade --all
复制代码

如果安装后出现 “conda command not found” 的错误提示,就按照下面的办法修改系统路径:
  1. export PATH="/Users/username/anaconda/bin:$PATH"
复制代码

首先验证下Anaconda是否安装成功。
  1. which python
  2. which conda
复制代码

如果输入的路径就是上一步指定的路径,那么就是安装成功。

Conda 是 Anaconda 自带的一个非常方面的软件环境和包管理系统,使用起来也非常方便,在实际应用中建议对每一个项目都利用 Conda 建立一个单独的虚拟环境,Conda 的基本使用流程为:


1.新建虚拟环境:使用 Conda 进行环境管理的最大好处便是将不同项目的运行环境进行隔离,从而互不干扰,新建环境的基本命令为 conda create -n env_name list of packages ,其中 -n env_name 指定了环境的名字,推荐与项目名称一致或者使用项目名称的缩写, list of packages 则用来指定需要安装到新环境中的软件包列表。

在创建新环境时,可以指定所需的 Python 版本,比如可以在系统中对 Python 2 和 Python 3 分别建立一个默认的通用环境:

可以使用下面的命令新建一个名字为 mytest且使用 Python3 的新环境:

2.激活环境:建立起多个环境之后,Mac/Linux 下可以使用 source activate mytest 进入相应的环境,Windows 下使用 activate mytest ,此时命令提示符左侧会显示环境的名称,类似 (mytest) ~ $ 。注意在进入特定环境之后执行 conda install 命令只会影响当前的环境,而不会影响其他的环境。要离开当前环境,Mac/Linux 下可以使用 source deactivate 进入相应的环境,Windows 下使用 deactivate 。

在环境名字的列表中会使用星号提示当前所在环境,系统的默认环境的名字为 root .

  1. # 创建虚拟环境
  2. conda create --name mytest python=3
  3. 或conda create -n mytest python=3
  4. # 查看所有环境列表
  5. conda env list
  6. # 激活虚拟环境
  7. activate mytest   # for windows
  8. source activate mytest  #for Linux/Mac
  9. # 取消环境/返回默认环境
  10. deactivate mytest   # for windows
  11. source deactivate mytest    #for Linux/Mac
  12. # 删除环境
  13. conda remove --name mytest --all


  14. # 安装或移除软件包
  15. conda install numpy, pandas
  16. # Jupyter Notebook 用来进行数据分析和探索比较方便
  17. conda install jupyter notebook
  18. # Conda 可以指定安装特定版本的软件包
  19. conda install numpy=1.10
  20. # 移除不再需要的软件包
  21. conda remove package_name
  22. # 更新特定的软件包
  23. conda update package_name
  24. # 更新所有的软件包
  25. conda update --all
  26. # 查看当前环境下已安装的包
  27. conda list
  28. # 查找package信息
  29. conda search numpy


  30. # 查看某个指定环境的已安装包
  31. conda list -n mytest
  32. # 在某个指定环境下安装package
  33. conda install -n mytest numpy
  34. # 更新某个环境下的package
  35. conda update -n mytest numpy
  36. # 删除某个环境下的package
  37. conda remove -n mytest numpy

  38. # 更新conda
  39. conda update conda
  40. # 更新anaconda
  41. conda update anaconda
  42. # 更新python
  43. conda update python
复制代码

第三方库管理

Conda 是类似 Pip 的包管理命令。不过自带的包比较少,所有很多包搜索不到,这里推荐添加第三方的源 Conda Forge

  1. conda config --add channels conda-forge
  2. conda install <package-name>
  3. # -n 指定环境名字,-c 指定安装源
  4. conda install -n mytest jieba
复制代码

设置国内镜像

如果需要安装很多packages,你会发现conda下载的速度经常很慢,因为Anaconda.org的服务器在国外。所幸的是,清华TUNA镜像源有Anaconda仓库的镜像,我们将其加入conda的配置即可:

  1. # 添加Anaconda的TUNA镜像
  2. conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  3. # TUNA的help中镜像地址加有引号,需要去掉

  4. # 设置搜索时显示通道地址
  5. conda config --set show_channel_urls yes
复制代码

执行完上述命令后,会生成~/.condarc(Linux/Mac)或C:UsersUSER_NAME.condarc文件,记录着我们对conda的配置,直接手动创建、编辑该文件是相同的效果。


最佳实践

由于 Python 2 与 Python 3 并不互相兼容,因此建议在系统中分别建立 Python 2 与 Python 3 的默认环境,并在其中安装所以自己可能用到的所有软件包作为通用环境,然后针对具体的项目建立各自特定的环境。


在分享 Python 代码或项目的时候,最好能够附带上该代码正常运行所需的环境配置文件,这样可以方便他人使用自己的代码,如前所述可以使用 conda env export > environment.yaml 导出环境配置文件,或者也可以使用 pip freeze > requirements.txt 来导出依赖列表。



作者: Miss_love    时间: 2020-12-30 16:18
支持




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2