0%

Python 虚拟环境之 Anoconda

Anaconda 是一个方便的 python 包管理和环境管理软件,一般用来配置不同的项目环境。

什么是 Anaconda

简介

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

Anaconda、conda、pip、virtualenv 的区别

anaconda

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

conda

conda 是包及其依赖项和环境的管理工具

适用语言:Python、R、Ruby、Lua、Scala、Java、JavaScript、C、C++、FORTRAN

适用平台:windows、macos、linux

用途:

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

conda 为 python 项目而创造,但可适用于上述的多种语言 conda 包和环境管理器包含于 Anaconda 的所有版本当中

pip

pip 是用于安装和管理软件包的包管理器

pip 编写语言:Python

Python 中默认安装的版本: python2.7.9 及后续版本:默认安装,命令为 pip python3.4 及后续版本:默认安装,命令为 pip3

1
2
3
4
# 下载离线安装包
pip download -r requirments.txt -d offline_package
# 通过离线安装包安装模块
pip install --no-index --find-links=offline_package -r requirments.txt

virtualenv

virtualenv:用于创建一个独立的 Python 环境的工具

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

pip 与 conda 比较

  1. 依赖项检查
    pip: 不一定会展示所需其他的依赖包; 安装包时或许会直接忽略依赖项而安装,尽在结果中提示错误。
    conda:列出所需其他依赖包;安装包时自动安装其他依赖项;可以便捷的在包的不同版本中自由切换。
  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、virtualenv 的关系
    conda 结合了 pip 和 virtualenv 的功能

Anaconda 的使用平台及安装条件

适用平台

anaconda 可以在一下系统平台中安装和使用:

  • windowx
  • macos
  • linux(x86/Power8)

安装条件

系统要求:32 位或 64 位系统均可
下载文件大小:约 800M
所需空间大小:3GB 空间大小(Miniconda 仅需 400MB 空间)

Anaconda 的安装步骤

  • linux环境
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    wget https://repo.anaconda.com/archive/Anaconda2-5.2.0-Linux-x86_64.sh
    sh Anaconda2-5.2.0-Linux-x86_64.sh
    # 第一个交互式选项:阅读许可证协议 空格或回车
    # 阅读完后,输入: yes 同一许可
    # 第二次提示输入: 可以自定义路径或者使用默认安装路径
    # 注意: 需要将 conda/activate 命令软连接至/usr/bin/
    # 验证安装是否成功的方法:
    conda list
    anaconda-nagvigator
    # 国外镜像网站,由于网络连接不上时可以添加国内镜像地址
    # conda config --add channels
    https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
    # conda config --add channels
    https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
    # conda config --add channels
    https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
    # conda config --set show_channel_urls yes

管理 conda

1
2
3
4
5
6
7
8
验证 conda 已被安装
conda --version # conda -V
# 更新 conda 至最新版本
conda update conda -y
# 查看conda帮助信息
conda --help # conda -h
# 卸载conda
rm -rf /xx/anaconda # 删除安装时的安装目录

管理环境

  • 创建新环境

    1
    2
    3
    4
    5
    6
    7
    conda create --name <env_name> <package_names> # --name 可以使用 -n 简写
    # <env_name> 即创建的环境名,建议以英文命名,切不加空格,名称两边不加尖括号
    # <package_names> 即安装在环境中的包名。名称两边不加尖括号

    # 安装指定的版本号,只需要在报名后面以 = 和版本好的形式执行。例如下:
    conda creata -n python3 python3.5 numpy pandas
    # 创建一个名为 python3 的环境,环境中安装版本为 python3.5,同时也安装了 numpy 和 pandas。

    提示:默认情况下,新创建的环境将会被保存在当前安装路径下的 envs 目录下,以环境命名的目录

  • 切换环境

    1
    2
    3
    4
    5
    6
    7
    8
    # 启动虚拟环境
    source activate <env_name>
    # windows 系统
    # activate <env_name>
    # 关闭虚拟环境
    source deactivate
    # windows 系统
    # deactivate

    提示:创建环境时未指定python的版本,将会安装与anaconda版本相同的python版本。 当成功切换环境之后,在该行行首将以 env_name 开头

  • 显示已创建环境

    1
    2
    3
    conda info --envs 
    # conda info -e
    # conda env list
  • 复制环境

    1
    conda create --name <new_env_name> --clone <copied_env_name>
  • 删除环境

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

管理包

查找可安装的包版本

  • 精确查找
1
2
3
4
5
conda search --full-name <package_full_name>  
# --full-name 为精确查找的参数
# <package_full_name> 是被查找包的全名
# 例如
conda search --full-name python # 可查找全名为python的包邮那些版本可供安装
  • 模糊查找
1
2
3
conda search <text>  # text 是包含有此字段的包名
# 例如:
conda search py # 即查找含有 py 字段的包,有那些版本可安装

获取当前环境中已安装的包信息

1
conda list

安装包

在指定环境中安装包

1
2
3
4
5
6
conda list
conda install --name <env_name> <package_name>
# env_name: 将包安装在指定的环境中
# package_name: 安装的报名
# 例如:
conda install --name python3 pandas # 在名为python3 的环境中安装pandas包

在当前环境中安装包

1
2
3
conda isntall <package_name>  # package_name: 安装的包名
# 例如:
conda install pandas # 在当前环境中安装pandas包

卸载包

卸载指定环境中的包

1
2
3
4
5
conda remove --name <env_name> <package_name>  
# env_name: 指定的环境名
# package_name: 需要卸载的包名
# 例如:
conda remove --name python3 pandas # 将环境 python3 的pandas包卸载

卸载当前环境的包

1
2
3
conda remove <package_name>  # package_name: 卸载的包名
# 例如:
conda remove pandas # 卸载当前环境的 pandas 包

更新包

更新所有包

1
conda update --all # conda upgrade --all

更新指定包

1
2
3
4
conda update <package_name>  # package_name: 需要升级的包,默认升级到最新版本
# 例如:
conda update pandas # conda upgrade pandas
conda update pandas numpy matplotlib # 更新多个包,用空格隔开