1. 初步认识 Anaconda
Anaconda 是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理
的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题
。Anaconda 利用工具/命令 conda
来进行 package 和 environment 的管理,并且已经包含了Python和相关的配套工具。
这里先解释下conda、anaconda这些概念的差别,详细差别见下节。
- conda
conda 可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理。 包管理与pip的使用类似,环境管理则允许用户方便地安装不同版本的python并可以快速切换。 - anaconda
anaconda 则是一个打包的集合,里面预装好了 conda、某个版本的python、众多packages、科学计算工具等等,所以也称为Python的一种发行版。其实还有Miniconda,顾名思义,它只包含最基本的内容——python与conda,以及相关的必须依赖项,对于空间要求严格的用户,Miniconda是一种选择。
进入下文之前,说明一下conda的设计理念——conda将几乎所有的工具、第三方包都当做package对待,甚至包括python和conda自身!因此,conda打破了包管理与环境管理的约束,能非常方便地安装各种版本python、各种package并方便地切换。
2. Anaconda、conda、pip、virtualenv的区别
2.1. Anaconda
Anaconda是一个包含180+的科学包及其依赖项的发行版本。其包含的科学包包括:conda, numpy, scipy, ipython notebook等。
2.2. conda
conda是包及其依赖项
和环境
的管理工具。
适用语言:
Python
, R, Ruby, Lua,Scala
,Java
, JavaScript,C/C++
, FORTRAN。适用平台:Windows, macOS, Linux
-
用途:快速安装、运行和升级包及其依赖项;在计算机中便捷地创建、保存、加载和切换环境。
如果你需要的包要求不同版本的Python,你无需切换到不同的环境,因为conda同样是一个环境管理器。仅需要几条命令,你可以创建一个完全独立的环境来运行不同的Python版本,同时继续在你常规的环境中使用你常用的Python版本。——conda官方网站
conda为Python项目而创造,但可适用于上述的多种语言。
conda包和环境管理器包含于Anaconda的所有版本当中。
2.3. pip
- pip是用于安装和管理软件包的
包管理器
。 - pip编写语言:Python。
- Python中默认安装的版本:
Python 2.7.9及后续版本:默认安装,命令为pip
Python 3.4及后续版本:默认安装,命令为pip3
2.4 virtualenv
用于创建一个独立的Python环境的工具。
-
解决问题:
- 当一个程序需要使用Python 2.7版本,而另一个程序需要使用Python 3.6版本,如何同时使用这两个程序?
- 如果将所有程序都安装在系统下的默认路径,如:
/usr/lib/python2.7/site-packages
,当不小心升级了本不该升级的程序时,将会对其他的程序造成影响。 - 如果想要安装程序并在程序运行时对其库或库的版本进行修改,都会导致程序的中断。
- 在共享主机时,无法在全局
site-packages
目录中安装包。
virtualenv将会为它自己的安装目录创建一个环境,这并不与其他virtualenv环境共享库;同时也可以选择性地不连接已安装的全局库。
2.5. pip 与 conda 比较
2.5.1. 依赖项检查
- pip:
- 不一定会展示所需其他依赖包。
- 安装包时或许会直接忽略依赖项而安装,仅在结果中提示错误。
- conda:
- 列出所需其他依赖包。
- 安装包时自动安装其依赖项。
- 可以便捷地在包的不同版本中自由切换。
2.5.2. 环境管理
- pip:维护多个环境难度较大。
- conda:比较方便地在不同环境之间进行切换,环境管理较为简单。
2.5.3. 对系统自带Python的影响
- pip:在系统自带的Python包中 更新/回退版本/卸载 将影响其他程序。
- conda:不会影响系统自带Python。
2.5.4. 适用语言
- pip:仅适用于Python。
- conda:适用于Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。
2.6. conda与pip、virtualenv的关系
conda结合了pip和virtualenv的功能。
3. 安装 Anaconda
3.1. macOS
3.1.1. 系统环境
系统版本:macOS Mojave 10.14
已装 python:python2.7.10 python3.7.0
已装其他工具:pip pip3 qt5 pyqt5
3.1.2. 安装
- 下载
前往 anaconda官网,选择版本(建议 Python 3.7),下载 :
下载完成,得到安装器软件包:
-
开始安装
双击安装包,开始安装:
点击继续。
点击继续。
- 阅读重要信息(不关注细节的可忽略,直接下一步):
Anaconda is the most popular Python data science platform. See https://www.anaconda.com/downloads/.
By default, this installer modifies your bash profile to activate the base environment of Anaconda3 when your shell starts up. To disable this, choose "Customize" at the "Installation Type" phase, and disable the "Modify PATH" option. If you decline this option, the executables installed by this installer will not be available on PATH. You will need to use the full executable path to run commands, or otherwise initialize the base environment of Anaconda3 on your own.
To install to a different location, select "Change Install Location..." at the "Installation Type" phase, then choose "Install on a specific disk...", choose the disk you wish to install on, and click "Choose Folder...". The "Install for me only" option will install Anaconda3 to the default location, ~/anaconda3.
The packages included in this installation are:
- alabaster 0.7.11
anaconda 5.3.0
anaconda-client 1.7.2
- anaconda-navigator 1.9.2
- anaconda-project 0.8.2
- appdirs 1.4.3
- appnope 0.1.0
- appscript 1.0.1
- asn1crypto 0.24.0
- astroid 2.0.4
- astropy 3.0.4
- atomicwrites 1.2.1
- attrs 18.2.0
- automat 0.7.0
- babel 2.6.0
- backcall 0.1.0
- backports 1.0
- backports.shutil_get_terminal_size 1.0.0
- beautifulsoup4 4.6.3
- bitarray 0.8.3
- bkcharts 0.2
- blas 1.0
- blaze 0.11.3
- bleach 2.1.4
- blosc 1.14.4
- bokeh 0.13.0
- boto 2.49.0
- bottleneck 1.2.1
- bzip2 1.0.6
- ca-certificates 2018.03.07
- certifi 2018.8.24
- cffi 1.11.5
- chardet 3.0.4
- click 6.7
- cloudpickle 0.5.5
- clyent 1.2.2
- colorama 0.3.9
conda 4.5.11
conda-build 3.15.1
conda-env 2.6.0
- constantly 15.1.0
- contextlib2 0.5.5
- cryptography 2.3.1
curl 7.61.0
- cycler 0.10.0
- cython 0.28.5
- cytoolz 0.9.0.1
- dask 0.19.1
- dask-core 0.19.1
- datashape 0.5.4
- dbus 1.13.2
- decorator 4.3.0
- defusedxml 0.5.0
- distributed 1.23.1
- docutils 0.14
- entrypoints 0.2.3
- et_xmlfile 1.0.1
- expat 2.2.6
- fastcache 1.0.2
- filelock 3.0.8
flask 1.0.2
- flask-cors 3.0.6
- freetype 2.9.1
- get_terminal_size 1.0.0
- gettext 0.19.8.1
- gevent 1.3.6
- glib 2.56.2
- glob2 0.6
- gmp 6.1.2
- gmpy2 2.0.8
- greenlet 0.4.15
- h5py 2.8.0
- hdf5 1.10.2
- heapdict 1.0.0
- html5lib 1.0.1
- hyperlink 18.0.0
- icu 58.2
- idna 2.7
- imageio 2.4.1
- imagesize 1.1.0
- incremental 17.5.0
- intel-openmp 2019.0
- ipykernel 4.9.0
ipython 6.5.0
- ipython_genutils 0.2.0
- ipywidgets 7.4.1
- isort 4.3.4
- itsdangerous 0.24
- jbig 2.1
- jdcal 1.4
- jedi 0.12.1
- jinja2 2.10
- jpeg 9b
- jsonschema 2.6.0
jupyter 1.0.0
jupyter_client 5.2.3
jupyter_console 5.2.0
jupyter_core 4.4.0
jupyterlab 0.34.9
jupyterlab_launcher 0.13.1
- keyring 13.2.1
- kiwisolver 1.0.1
- lazy-object-proxy 1.3.1
- libcurl 7.61.0
- libcxx 4.0.1
- libcxxabi 4.0.1
- libedit 3.1.20170329
- libffi 3.2.1
- libgfortran 3.0.1
- libiconv 1.15
- libpng 1.6.34
- libsodium 1.0.16
- libssh2 1.8.0
- libtiff 4.0.9
- libxml2 2.9.8
- libxslt 1.1.32
- llvmlite 0.24.0
- locket 0.2.0
- lxml 4.2.5
- lzo 2.10
- markupsafe 1.0
- matplotlib 2.2.3
- mccabe 0.6.1
- mistune 0.8.3
- mkl 2019.0
- mkl-service 1.1.2
- mkl_fft 1.0.4
- mkl_random 1.0.1
- more-itertools 4.3.0
- mpc 1.1.0
- mpfr 4.0.1
- mpmath 1.0.0
- msgpack-python 0.5.6
- multipledispatch 0.6.0
- navigator-updater 0.2.1
- nbconvert 5.4.0
- nbformat 4.4.0
- ncurses 6.1
- networkx 2.1
- nltk 3.3.0
- nose 1.3.7
- notebook 5.6.0
- numba 0.39.0
- numexpr 2.6.8
numpy 1.15.1
- numpy-base 1.15.1
- numpydoc 0.8.0
- odo 0.5.1
- olefile 0.46
- openpyxl 2.5.6
- openssl 1.0.2p
- packaging 17.1
pandas 0.23.4
- pandoc 1.19.2.1
- pandocfilters 1.4.2
- parso 0.3.1
- partd 0.3.8
- path.py 11.1.0
- pathlib2 2.3.2
- patsy 0.5.0
- pcre 8.42
- pep8 1.7.1
- pexpect 4.6.0
- pickleshare 0.7.4
- pillow 5.2.0
pip 10.0.1
- pkginfo 1.4.2
- pluggy 0.7.1
- ply 3.11
- prometheus_client 0.3.1
- prompt_toolkit 1.0.15
- psutil 5.4.7
- ptyprocess 0.6.0
- py 1.6.0
- pyasn1 0.4.4
- pyasn1-modules 0.2.2
- pycodestyle 2.4.0
- pycosat 0.6.3
- pycparser 2.18
- pycrypto 2.6.1
- pycurl 7.43.0.2
- pyflakes 2.0.0
- pygments 2.2.0
- pylint 2.1.1
- pyodbc 4.0.24
- pyopenssl 18.0.0
- pyparsing 2.2.0
pyqt 5.9.2
- pysocks 1.6.8
- pytables 3.4.4
- pytest 3.8.0
- pytest-arraydiff 0.2
- pytest-astropy 0.4.0
- pytest-doctestplus 0.1.3
- pytest-openfiles 0.3.0
- pytest-remotedata 0.3.0
python 3.7.0
- python-dateutil 2.7.3
- python.app 2
- pytz 2018.5
- pywavelets 1.0.0
- pyyaml 3.13
- pyzmq 17.1.2
qt 5.9.6
- qtawesome 0.4.4
- qtconsole 4.4.1
- qtpy 1.5.0
- readline 7.0
- requests 2.19.1
- rope 0.11.0
- ruamel_yaml 0.15.46
- scikit-image 0.14.0
- scikit-learn 0.19.2
- scipy 1.1.0
- seaborn 0.9.0
- send2trash 1.5.0
- service_identity 17.0.0
- setuptools 40.2.0
- simplegeneric 0.8.1
- singledispatch 3.4.0.3
sip 4.19.8
- six 1.11.0
- snappy 1.1.7
- snowballstemmer 1.2.1
- sortedcollections 1.0.1
- sortedcontainers 2.0.5
- sphinx 1.7.9
- sphinxcontrib 1.0
- sphinxcontrib-websupport 1.1.0
- spyder 3.3.1
- spyder-kernels 0.2.6
- sqlalchemy 1.2.11
- sqlite 3.24.0
- statsmodels 0.9.0
- sympy 1.2
- tblib 1.3.2
- terminado 0.8.1
- testpath 0.3.1
- tk 8.6.8
- toolz 0.9.0
- tornado 5.1
- tqdm 4.26.0
- traitlets 4.3.2
- twisted 18.7.0
- unicodecsv 0.14.1
- unixodbc 2.3.7
- urllib3 1.23
- wcwidth 0.1.7
- webencodings 0.5.1
- werkzeug 0.14.1
- wheel 0.31.1
- widgetsnbextension 3.4.1
- wrapt 1.10.11
- xlrd 1.1.0
- xlsxwriter 1.1.0
- xlwings 0.11.8
- xlwt 1.3.0
- xz 5.2.4
- yaml 0.1.7
- zeromq 4.2.5
- zict 0.1.3
- zlib 1.2.11
- zope 1.0
- zope.interface 4.5.0
如上文所示,anaconda将安装很多包,其中标红的为目前我比较熟悉的包,如果不用anaconda,这些包得一个个手动安装,anoconda真是好用啊!
-
继续安装
选择“在特定的磁盘上安装...”,安装在根目录。(根据个人需求选择)
点击“安装”。
-
安装 Microsoft VSCode(可跳过)
Anaconda has partnered with Microsoft to bring you Visual Studio Code. Visual Studio Code is a free, open source, streamlined cross-platform code editor with excellent support for Python code editing, IntelliSense, debugging, linting, version control, and more.
Anaconda 同微软合作推出了 Visual Studio Code,Visual Studio Code 是一个免费、开源、流线型的跨平台代码编辑器,可以很好地支持python代码编辑、智能感知、调试、代码控制等。
点击“Install Microsoft VSCode”。
需在线安装,网络不好,安装失败。
-
安装成功
到应用程序,打开 Anaconda Navigator ,会展示出已经安装好的其他常用应用,如:
- Anaconda Navigtor :用于管理工具包和环境的图形用户界面,后续涉及的众多管理命令也可以在 Navigator 中手工实现。
- Jupyter notebook :基于web的交互式计算环境,可以编辑易于人们阅读的文档,用于展示数据分析的过程。
- qtconsole :一个可执行 IPython 的仿终端图形界面程序,相比 Python Shell 界面,qtconsole 可以直接显示代码生成的图形,实现多行代码输入执行,以及内置许多有用的功能和函数。
spyder :一个使用Python语言、跨平台的、科学运算集成开发环境。
查看安装路径:
3.1.3. 配置
3.1.3.1. 环境变量
Anaconda 安装好后,会自动在 ~/.bash_profile 中添加 anaconda 的环境变量,如下:
因此只需要source一下即可。
anaconda安装之后,source之前,先看一下当前的python:
默认 python 为 python2:
使用 python3 需使用 python3 指令:
我们来source 一下:
默认 python 变为 python3,且是 anaconda 自带的 python3:
3.1.3.2. 修改conda镜像源
如不修改conda的镜像源,99.99%会报http链接失败的错误(网友踩坑经验)。
输入以下两条命令来添加清华源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
此时你的 ~ 目录下会生成隐藏文件 .condarc:
内容如下:
删除其中的第1行、第4行(建议只删第一行,原因请见3.1.3.3节),最终版本文件如下:
用命令
conda info
查看当前配置信息,channel URLs 字段内容内容如下,即修改成功。
若未删除第4行,则还会有默认的镜像源:
3.1.3.3. python2 python3 切换
- 创建python3.7环境(图形界面)
报错——当前镜像源获取不到python3.7的包:
解决方法:修改~/.condarc,增加 -defaults ,将默认镜像源添加进来:
保存退出,输入:
conda info
查看配置信息,默认镜像源已恢复:
重新创建python3.7环境,成功:
使用如下命令,查看当前有哪些环境:
conda info -e
星号表示当前激活的环境。
激活py37环境:
source activate py37
或
conda activate py37
- 创建python2.7环境(命令行方式)
输入以下命令,创建python2.7环境:
conda create -n py27 python=2.7
或
conda create --name py27 python=2.7
创建成功:
Anaconda 图形界面也显示了 py27:
激活py27环境:
conda activate py27
3.2. Windows 10
前往 anaconda官网,选择版本(建议 Python 3.7),下载 :
3.2.1. 安装
安装请参考 http://www.cnblogs.com/IT-LearnHall/p/9486029.html
3.2.2. 配置
3.2.2.1. 配置环境变量
右键“此电脑”,依次点击“属性”->"高级系统设置"->"环境变量",双击“用户变量“中的path:
点击”新建“,新增三个环境变量(注意第三个环境变量一定要加,否则创建环境或者安装包的时候会报错:CondaHTTPError: HTTP 000 CONNECTION FAILED for url):
C:\Users\sille\Anaconda3
C:\Users\sille\Anaconda3\Scripts
C:\Users\sille\Anaconda\Library\bin
点击确定。
打开终端,输入
conda --version
正确显示版本号,则环境变量设置成功:
3.2.2.2. 更改镜像源
同mac版,请见3.1.3.2.节。
3.2.2.3. (命令方式)创建 python3.7环境
查看当前有哪些环境:
conda info -e
或
conda info --envs
只有一个base环境:
打开 Anaconda 图形界面,同样显示只有一个环境——base(root):
输入以下命令,创建python3.7环境:
conda create -n py37 python=3.7
或
conda create --name py37 python=3.7
失败了,提示当前镜像源找不到python3.7的包。
原因是:在上一节更改镜像源的时候,删掉了 -defaults 这一行,导致默认镜像源被去掉了,只保留了新增的清华镜像源,这一镜像源可能对于较新的包更新较慢。
解决方法:打开 C:\Users\用户名下的隐藏文件 .condarc,增加 -defaults 这一行,如下图所示。
输入命令,查看当前镜像源:
conda info
可见,默认镜像源已经添加进来:
再次执行命令,创建python3.7环境:
conda create -n py37 python=3.7
至此,python3.7环境已经创建完成。
打开 anaconda 图形界面,也可以看到刚创建的py37:
激活 py37环境:
activate py37
激活成功后,终端前面的括号中会显示环境名。
查看当前环境的python版本:
python --version
查看安装了哪些包:
conda list
3.2.2.4. (图形界面)创建 python2.7环境
4. 使用
4.1. 在指定环境下载指定包
5. 常用命令
5.1. 管理环境
5.1.1. 打开anaconda的anaconda prompt查看当前环境:
conda info -e
或
conda info --envs
5.1.2. 创建新的环境
- 创建新的环境(名为py27),并指定运行环境为python2.7
conda create -n py27 python=2.7
或
conda create --name py27 python=2.7
- 创建新环境,并安装包
conda create -n env_name numpy matplotlib python=2.7
5.1.3. 显示已创建的环境
conda info --envs
# 或
conda info -e
# 或
conda env list
5.1.4. 激活及退出环境
- 激活环境
macOS:
conda activate py27
或
source activate py27
windows:
activate py27
以macOS 为例:
- 退出环境
macOS:
conda deactivate
或
source deactivate
windows:
deactivate
以 macOS 为例:
当执行"退出当前环境",回到root环境命令后,原本行首以“(env_name)”或“[env_name]”开头的字符将不再显示。
5.1.5. 复制环境
conda create --name new_env_name --clone copied_env_name
注意:
- copied_env_name 即为被复制/克隆环境名
- new_env_name 即为复制之后新环境的名称
- 如:conda create --name py2 --clone python2,即为克隆名为“python2”的环境,克隆后的新环境名为“py2”。此时,环境中将同时存在“python2”和“py2”环境,且两个环境的配置相同。
5.1.6. 删除环境
conda remove --name env_name --all
env_name> 为被删除环境的名称。
5.2. 管理包
5.2.1. 检查新环境下的python版本以及在创建环境时conda自动安装了那些必须的包
#查看python版本
python --version
#查看安装了那些包
conda list
#或者
conda list -n python27
5.2.1. 安装包
给某个特定环境安装包。
- 切换到环境安装在安装
activate env_name
conda isntall pkg_name
- 直接在别的环境安装
conda install -n env_name pkg_name