0. 前言
conda是一个开源的包和环境管理系统,可以服务与任何语言,并广泛应用于python。
Anaconda是conda的一个分支,是一个包含很多软件包的数据科学平台.
Miniconda安装时不默认安装很多软件包。注意对miniconda来说,每一次打开命令行窗口,conda指令是不可用的,需要使用以下指令来用miniconda:
$ export PATH=$HOME/miniconda/bin:$PATH
这里以Anaconda为例:
1. 操作
首先,检查一下是否按安装了conda:
$ conda --version
conda 4.2.13
想看关于任何指令的文档,都可以通过输入conda指令加 --help来获取。例如,想知道关于 update 的ingoing:
conda update --help
一旦确认已经安装了conda,我们还要确认一下是否是最新装状态。
conda update conda
Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata: ....
.Solving package specifications: .........
Package plan for installation in environment //anaconda:
The following packages will be downloaded:
package | build
---------------------------|-----------------
conda-env-2.6.0 | 0 601 B
ruamel_yaml-0.11.14 | py27_0 184 KB
conda-4.2.12 | py27_0 376 KB
------------------------------------------------------------
Total: 560 KB
The following NEW packages will be INSTALLED:
ruamel_yaml: 0.11.14-py27_0
The following packages will be UPDATED:
conda: 4.0.7-py27_0 --> 4.2.12-py27_0
conda-env: 2.4.5-py27_0 --> 2.6.0-0
python: 2.7.11-0 --> 2.7.12-1
sqlite: 3.9.2-0 --> 3.13.0-0
Proceed ([y]/n)? y
Fetching packages ...
conda-env-2.6. 100% |################################| Time: 0:00:00 360.78 kB/s
ruamel_yaml-0. 100% |################################| Time: 0:00:00 5.53 MB/s
conda-4.2.12-p 100% |################################| Time: 0:00:00 5.84 MB/s
Extracting packages ...
[ COMPLETE ]|###################################################| 100%
Unlinking packages ...
[ COMPLETE ]|###################################################| 100%
Linking packages ...
[ COMPLETE ]|###################################################| 100%
conda将会对比conda版本然后让你知道哪些可以安装。它还会告诉你其他软件包将会自动升级。如果新的版本可以被升级了,根据指令升级到最新版本。
在这里,conda需要被升级,升级之后,一些依赖包也需要被更新。这里也有一个新的包需要被安装来更新conda。
2. 操作环境
利用conda,你可以为你的工程创建一个独立的python环境。这个环境是一系列可以被用到一个或多个工程中的软件包。Anaconda默认的环境是root 环境,这里包含了默认安装的软件包。
这里有两种方法创建conda环境:
1. 一个YAML格式的环境文件(environment.yml)
2. 人工指定软件包
用环境文件创建环境
YMAL是 YAML Ain’t Markup Language 的缩写, 它是对所有可用的数据序列化标准。
下面是一个环境文件(environment.yml)的例子:
在conda中可以用pip的方法安装软件:
name: playenv
channels:
- conda-forge
dependencies:
- python=3.6
- pip
- pip:
- pyjokes
用下面的指令生成环境:
conda env create --file environment.yml
Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata .........
Solving package specifications: ..........
Linking packages ...
[ COMPLETE ]|###################################################################################################################################################################| 100%
Collecting pyjokes
Downloading pyjokes-0.5.0-py2.py3-none-any.whl
Installing collected packages: pyjokes
Successfully installed pyjokes-0.5.0
#
# To activate this environment, use:
# > source activate playenv
#
# To deactivate this environment, use:
# > source deactivate playenv
#
使用环境的时候会根据系统不同会有所区别:
- Linux, OS X:
$ source activate playenv
- Windows:
$ activate playenv
回到root:
- Linux, OS X:
$ source deactivate
- Windows:
$ deactivate
人工指定软件包
我们用命令行窗口指定环境名字test_env,channel,软件包清单。下面是一个例子:
conda create -c conda-forge -n test_env python=2.7 numpy matplotlib pandas
conda会自动解决软件包之间的依赖等问题并创建一个包含这些软件包的新的环境。
如果你的命令行窗口显示如下,则表示你在当前环境中:
(test_env) D-69-91-135-15:env_files lsetiawan$
前面的(test_env)显示了你在哪个环境中
你还可以检查当前的激活的环境:
$ conda env list
test_env * //anaconda/envs/test_env
playenv //anaconda/envs/playenv
root //anaconda
分享环境给别人
通过命令行导出环境文件:
$ conda env export -f test_env.yml -n test_env
导出的文件不能跨平台使用。
拷贝环境并删除环境
以下例子克隆 test_env 生成 live_env
$ conda create --name live_env --clone test_env
删除环境也很简单:
$ conda env remove -n live_env
3. 操作软件包
查看某环境下的软件包列表:
$ conda list -n test_env
# packages in environment at //anaconda/envs/test_env:
#
Using Anaconda Cloud api site https://api.anaconda.org
blas 1.1 openblas conda-forge
ca-certificates 2016.9.26 0 conda-forge
certifi 2016.9.26 py27_0 conda-forge
cycler 0.10.0 py27_0 conda-forge
freetype 2.6.3 1 conda-forge
functools32 3.2.3.2 py27_1 conda-forge
libgfortran 3.0.0 0 conda-forge
...
有些软件包可能conda没有,但是在pypi却有.这里我们 以软件包 rasterio 为例在 anaconda cloud 中。
Anaconda Cloud 可以说是储存软件包的地方。它由channels/owners组成,每个channel都包含一个到多个conda软件包。
这里我们将使用 conda-forge(常用的可靠的channel) 里的 rasterio:
你也可以通过命令行搜索该软件包:
$ anaconda search rasterio
Using Anaconda Cloud api site https://api.anaconda.org
Run 'anaconda show <USER/PACKAGE>' to get more details:
Packages:
Name | Version | Package Types | Platforms
------------------------- | ------ | --------------- | ---------------
IOOS/rasterio | 1.0a2 | conda | linux-64, win-32, win-64, osx-64
Terradue/rasterio | 0.32.0 | conda | linux-64
: Fast and direct raster I/O for use with Numpy and SciPy
anaconda/rasterio | 0.36.0 | conda | linux-64, win-32, win-64, linux-32, osx-64
conda-forge/rasterio | 1.0a2 | conda | linux-64, win-32, win-64, osx-64
: Rasterio reads and writes geospatial raster datasets
dharhas/rasterio | 0.23.0 | conda | win-64
: Rasterio reads and writes geospatial raster datasets.
erdc/rasterio | 0.23.0 | conda | win-64
: Rasterio reads and writes geospatial raster datasets.
jesserobertson/rasterio | 0.23.0 | conda | linux-64, linux-32, osx-64
jhamman/rasterio_to_xarray | 2016.03.16-1558 | ipynb |
: IPython notebook
krisvanneste/rasterio | 0.26.0 | conda | win-64
ocefpaf/rasterio | 0.19.1 | conda | linux-64, osx-64
omgarcia/rasterio | 0.25.0 | conda | linux-64
pypi/rasterio | 0.13.2 | pypi |
: Fast and direct raster I/O for Python programmers who use Numpy
robintw/rasterio | 0.35.1 | conda | osx-64
: Rasterio reads and writes geospatial raster datasets
sgillies/rasterio | 0.15 | conda | osx-64
ztessler/rasterio | 0.31.0 | conda | osx-64
: Fast and direct raster I/O for use with Numpy and SciPy
Found 15 packages
We will install version 0.35 of rasterio
from conda-forge into test_env
in this example.
$ conda config --add channels conda-forge
$ conda install -c conda-forge rasterio=0.35
删除软件包:
$ conda remove -n test_env rasterio
Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata .........
Solving package specifications: ..........
Package plan for package removal in environment //anaconda/envs/test_env:
The following packages will be REMOVED:
rasterio: 0.35.1-np111py27_1 conda-forge
Proceed ([y]/n)? y
Unlinking packages ...
[ COMPLETE ]|#######################################################################################################| 100%