conda
conda是anaconda的环境管理和包管理器,conda将几乎所有的工具、第三方包都当做package对待,甚至包括python和conda自身。
conda命令
使用conda -h查看conda 支持的命令信息
# 查看conda支持的完整命令
conda -h
sage: conda [-h] [-V] command ...
conda command [arguments]
很多跟在--后边的命令参数,可以被略写为一个短线加命令首字母,如--name可缩写为-n
conda is a tool for managing and deploying applications, environments and packages.
Options:
positional arguments:
command
info Display information about current conda install.
help Displays a list of available conda commands and their help
strings.
list List linked packages in a conda environment.
search Search for packages and display their information. The input
is a Python regular expression. To perform a search with a
search string that starts with a -, separate the search from
the options with --, like 'conda search -- -h'. A * in the
results means that package is installed in the current
environment. A . means that package is not installed but is
cached in the pkgs directory.
create Create a new conda environment from a list of specified
packages.
install Installs a list of packages into a specified conda
environment.
update Updates conda packages to the latest compatible version. This
command accepts a list of package names and updates them to
the latest versions that are compatible with all other
packages in the environment. Conda attempts to install the
newest versions of the requested packages. To accomplish
this, it may update some packages that are already installed,
or install additional packages. To prevent existing packages
from updating, use the --no-update-deps option. This may
force conda to install older versions of the requested
packages, and it does not prevent additional dependency
packages from being installed. If you wish to skip dependency
checking altogether, use the '--force' option. This may
result in an environment with incompatible packages, so this
option must be used with great caution.
upgrade Alias for conda update. See conda update --help.
remove Remove a list of packages from a specified conda environment.
uninstall Alias for conda remove. See conda remove --help.
config Modify configuration values in .condarc. This is modeled
after the git config command. Writes to the user .condarc
file (/Users/Garden/.condarc) by default.
clean Remove unused packages and caches.
package Low-level conda package utility. (EXPERIMENTAL)
optional arguments:
-h, --help Show this help message and exit.
-V, --version Show the conda version number and exit.
other commands, such as "conda build", are avaialble when additional conda
packages (e.g. conda-build) are installed
任何时候,你可以通过在命令后加上-h 或者--help来获取该命令的完整文档:
Garden ~ conda create -h
usage: conda create [-h] [-y] [--dry-run] [-f] [--file FILE] [--no-deps] [-m]
[--use-index-cache] [--use-local] [--offline] [--no-pin]
[-c CHANNEL] [--override-channels]
[-n ENVIRONMENT | -p PATH] [-q] [--copy] [--alt-hint]
[--update-dependencies] [--no-update-dependencies]
[--channel-priority] [--no-channel-priority]
[--show-channel-urls] [--no-show-channel-urls] [--json]
[--debug] [--verbose] [--clone ENV]
[--no-default-packages]
[package_spec [package_spec ...]]
配置conda
conda有两种等价的配置方式:
命令行(conda config)
# 设置单值属性
conda config —set 属性名 属性值
# 为多值属性添加属性值
conda config —add 属性名 属性值
配置文件(~/.confarc)
conda的配置文件.condarc是一个可选的运行时配置文件,(默认情况下并不存在该文件,当用户首次运行conda config命令时,它会在HOME目录下自动创建),允许高级用户对conda进行各种配置:
管理包搜索通道;
设置代理;
设置环境目录;
是否根据当前激活环境名更新bash提示;
用户构建的包是否上传到Anaconda.org;
默认包含在新环境中的包或特征;
# 添加anacondaTUNA镜像
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- r
- defaults
# 设置搜索时显示通道地址
show_channel_urls: true
示例
添加镜像
anaconda的服务器在国外,速度很慢,所幸清华TUNA镜像有anaconda库的镜像,将其加入conda配置即可:
# 添加anacondaTUNA镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
# 设置搜索时显示通道地址
conda config --set show_channel_urls yes
取消询问
# 当安装包时,总会被询问是否`Proceed ([y]/n)?` ,默认为False,设置为`always_yes: True`将不会再做提醒
conda config --set always_yes True
显示通道URL
# 当下载安装包时,显示通道URL,默认为False,设置show_channel_urls:True
conda config --set show_channel_urls True
环境管理
环境管理允许用户方便地安装不同版本的python(虚拟环境)并可以快速切换。Anaconda实际是通过通过virtualenv来实现环境管理的。
# 查看已安装环境及当前被激活的环境,用户安装的不同python环境都会被放在目录~/anaconda/envs下,当前被激活的环境会显示有一个星号或者括号
conda info -e
# 创建虚拟环境,环境名尽量和环境用途相关,如果不指定python版本,conda会安装我们最初安装conda时的默认版本
conda create --n 环境名称 python=python版本
# 克隆环境
conda create -n 新环境名称 —clone 被克隆的环境名称
# 创建环境,同时安装完整anaconda集合包
conda create -n 新环境名 python=python版本 anaconda
# 激活环境,激活后,会发现terminal输入的地方多了py27的字样
# 实际上,此时系统做的事情就是把默认3.5环境从PATH中去除,再把2.7
# 对应的命令加入PATH。此时输入python得到的是python2.7.13,pip也是py27中的pip包管理工具
activate 环境名 # windows中激活py27环境
source activate 环境名 # mac或Linux中激活py27环境
# 取消环境激活,返回默认环境
deactivate # windows
source deactivate # mac或Liunx
# 删除环境
conda remove —name 环境名 —all
包管理
conda作为包管理工具和pip类似,但是还有区别:
某些包不能通过conda安装,只能通过pip安装
anaconda python conda都被conda视为package,和普通安装包管理方式相同
普通包管理
# 查看当前激活环境中的已安装包,如果希望查询指定环境中已安装包,则在command命令后加上-n 环境名,其他命令类似
conda list (-n python34)
# 查找package信息
conda search (-n python34) numpy
# 查看某安装包是否已安装
conda list | grep 包名(支持正则)
# 安装package,如果不用-n指定环境名称,则被安装在当前活跃环境,也可以通过-c指定通过某个channel安装
conda install (-n python34) numpy
# 更新package
conda update (-n python34) numpy
# 删除package
conda remove (-n python34) numpy
# 新创建的环境只会包含较少的必须项如pip、python,若希望新环境和默认环境那样安装完整anaconda集合包
conda install anaconda
特殊包管理
# 更新conda,保持conda最新
conda update conda
# 更新anaconda集合包
conda update anaconda
# 更新python,假设当前环境是python 3.4, conda会将python升级为3.4.x系列的当前最新版本
conda update python
# 更新anaconda-navigator
conda update anaconda-navigator
conda和其他工具的关系
conda和anaconda
anaconda是python的一个发行版,软件发行版是在系统上提前编译和配置好的软件包集合, 装好了后就可以直接用。Anaconda发行版会预装很多pydata生态圈里的软件,而Miniconda是最小的conda安装环境, 一个干净的conda环境
conda是一个包管理器,包管理器是自动化软件安装,更新,卸载的一种工具。
虽然conda是用Anaconda打包的,但是,conda和Anaconda没有必然关系, 你可以不安装Anaconda的同时, 使用conda安装和管理软件。
conda和pip
pip可以允许你在任何环境中安装python包,而conda允许你在conda环境中安装任何语言包。而如果,你想要让许多依赖库一起很好地工作(比如数据分析中的Numpy,scipy,Matplotlib等等)那你就应该使用conda,conda很好地整合了包之间的互相依赖。
pip 和 conda 是为不同目的存在的,我们应该更加关注怎么同时用好这两个工具,而不是只用一个
conda和virtualenv
事实上,你可以在virtualenv环境下安装conda,但是最好用conda自己的环境工具,这样会和pip有更好的兼容性
virtualenv test_conda
source test_conda/bin/activate
pip install conda
conda install numpy
也可以在conda中创建虚拟环境
conda create -n yourenvname python=x.x anaconda
source activate yourenvname
conda和wheels
wheels只是解决了conda试图克服的许多困难中的一个, conda二进制编排还是有很多wheels没有的优势。
wheels和conda都解决了预编译的代码安装问题(不仅仅是源代码安装)。但是wheel没有conda的依赖处理能力,wheels只能跟踪python代码的依赖关系,conda可以跟踪很多c代码的依赖关系,这为许多用numpy和scipy做科学计算优化的科学家省了不少心。
FAQ
- anaconda闪退
sudo anaconda-navigator