1. 初步認(rèn)識(shí) Anaconda
Anaconda 是一個(gè)用于科學(xué)計(jì)算的Python發(fā)行版,支持 Linux, Mac, Windows系統(tǒng),提供了包管理與環(huán)境管理的功能,可以很方便地解決多版本python并存、切換以及各種第三方包安裝問題。Anaconda 利用工具/命令 conda 來進(jìn)行 package 和 environment 的管理,并且已經(jīng)包含了Python和相關(guān)的配套工具。
這里先解釋下conda、anaconda這些概念的差別,詳細(xì)差別見下節(jié)。
- conda
conda 可以理解為一個(gè)工具,也是一個(gè)可執(zhí)行命令,其核心功能是包管理與環(huán)境管理。 包管理與pip的使用類似,環(huán)境管理則允許用戶方便地安裝不同版本的python并可以快速切換。 - anaconda
anaconda 則是一個(gè)打包的集合,里面預(yù)裝好了 conda、某個(gè)版本的python、眾多packages、科學(xué)計(jì)算工具等等,所以也稱為Python的一種發(fā)行版。其實(shí)還有Miniconda,顧名思義,它只包含最基本的內(nèi)容——python與conda,以及相關(guān)的必須依賴項(xiàng),對(duì)于空間要求嚴(yán)格的用戶,Miniconda是一種選擇。
進(jìn)入下文之前,說明一下conda的設(shè)計(jì)理念——conda將幾乎所有的工具、第三方包都當(dāng)做package對(duì)待,甚至包括python和conda自身!因此,conda打破了包管理與環(huán)境管理的約束,能非常方便地安裝各種版本python、各種package并方便地切換。
2. Anaconda、conda、pip、virtualenv的區(qū)別
2.1. Anaconda
Anaconda是一個(gè)包含180+的科學(xué)包及其依賴項(xiàng)的發(fā)行版本。其包含的科學(xué)包包括:conda, numpy, scipy, ipython notebook等。
2.2. conda
conda是包及其依賴項(xiàng)和環(huán)境的管理工具。
適用語言:
Python, R, Ruby, Lua,Scala,Java, JavaScript,C/C++, FORTRAN。適用平臺(tái):Windows, macOS, Linux
-
用途:快速安裝、運(yùn)行和升級(jí)包及其依賴項(xiàng);在計(jì)算機(jī)中便捷地創(chuàng)建、保存、加載和切換環(huán)境。
如果你需要的包要求不同版本的Python,你無需切換到不同的環(huán)境,因?yàn)閏onda同樣是一個(gè)環(huán)境管理器。僅需要幾條命令,你可以創(chuàng)建一個(gè)完全獨(dú)立的環(huán)境來運(yùn)行不同的Python版本,同時(shí)繼續(xù)在你常規(guī)的環(huán)境中使用你常用的Python版本?!?a target="_blank">conda官方網(wǎng)站
conda為Python項(xiàng)目而創(chuàng)造,但可適用于上述的多種語言。
conda包和環(huán)境管理器包含于Anaconda的所有版本當(dāng)中。
2.3. pip
- pip是用于安裝和管理軟件包的
包管理器。 - pip編寫語言:Python。
- Python中默認(rèn)安裝的版本:
Python 2.7.9及后續(xù)版本:默認(rèn)安裝,命令為pip
Python 3.4及后續(xù)版本:默認(rèn)安裝,命令為pip3
2.4 virtualenv
用于創(chuàng)建一個(gè)獨(dú)立的Python環(huán)境的工具。
-
解決問題:
- 當(dāng)一個(gè)程序需要使用Python 2.7版本,而另一個(gè)程序需要使用Python 3.6版本,如何同時(shí)使用這兩個(gè)程序?
- 如果將所有程序都安裝在系統(tǒng)下的默認(rèn)路徑,如:
/usr/lib/python2.7/site-packages,當(dāng)不小心升級(jí)了本不該升級(jí)的程序時(shí),將會(huì)對(duì)其他的程序造成影響。 - 如果想要安裝程序并在程序運(yùn)行時(shí)對(duì)其庫或庫的版本進(jìn)行修改,都會(huì)導(dǎo)致程序的中斷。
- 在共享主機(jī)時(shí),無法在全局
site-packages目錄中安裝包。
virtualenv將會(huì)為它自己的安裝目錄創(chuàng)建一個(gè)環(huán)境,這并不與其他virtualenv環(huán)境共享庫;同時(shí)也可以選擇性地不連接已安裝的全局庫。
2.5. pip 與 conda 比較
2.5.1. 依賴項(xiàng)檢查
- pip:
- 不一定會(huì)展示所需其他依賴包。
- 安裝包時(shí)或許會(huì)直接忽略依賴項(xiàng)而安裝,僅在結(jié)果中提示錯(cuò)誤。
- conda:
- 列出所需其他依賴包。
- 安裝包時(shí)自動(dòng)安裝其依賴項(xiàng)。
- 可以便捷地在包的不同版本中自由切換。
2.5.2. 環(huán)境管理
- pip:維護(hù)多個(gè)環(huán)境難度較大。
- conda:比較方便地在不同環(huán)境之間進(jìn)行切換,環(huán)境管理較為簡(jiǎn)單。
2.5.3. 對(duì)系統(tǒng)自帶Python的影響
- pip:在系統(tǒng)自帶的Python包中 更新/回退版本/卸載 將影響其他程序。
- conda:不會(huì)影響系統(tǒng)自帶Python。
2.5.4. 適用語言
- pip:僅適用于Python。
- conda:適用于Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。
2.6. conda與pip、virtualenv的關(guān)系
conda結(jié)合了pip和virtualenv的功能。
3. 安裝 Anaconda
3.1. macOS
3.1.1. 系統(tǒng)環(huán)境
系統(tǒng)版本:macOS Mojave 10.14
已裝 python:python2.7.10 python3.7.0
已裝其他工具:pip pip3 qt5 pyqt5


3.1.2. 安裝
- 下載
前往 anaconda官網(wǎng),選擇版本(建議 Python 3.7),下載 :
anaconda_mac.png
下載完成,得到安裝器軟件包:
pkg.png -
開始安裝
雙擊安裝包,開始安裝:
image.png
點(diǎn)擊繼續(xù)。
image.png
點(diǎn)擊繼續(xù)。
read.png - 閱讀重要信息(不關(guān)注細(xì)節(jié)的可忽略,直接下一步):
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.0anaconda-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.11conda-build 3.15.1conda-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.0jupyter_client 5.2.3jupyter_console 5.2.0jupyter_core 4.4.0jupyterlab 0.34.9jupyterlab_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將安裝很多包,其中標(biāo)紅的為目前我比較熟悉的包,如果不用anaconda,這些包得一個(gè)個(gè)手動(dòng)安裝,anoconda真是好用??!
-
繼續(xù)安裝
image.png
image.png
選擇“在特定的磁盤上安裝...”,安裝在根目錄。(根據(jù)個(gè)人需求選擇)
image.png
image.png
點(diǎn)擊“安裝”。
image.png
image.png
image.png
image.png -
安裝 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 是一個(gè)免費(fèi)、開源、流線型的跨平臺(tái)代碼編輯器,可以很好地支持python代碼編輯、智能感知、調(diào)試、代碼控制等。
image.png
點(diǎn)擊“Install Microsoft VSCode”。
需在線安裝,網(wǎng)絡(luò)不好,安裝失敗。
image -
安裝成功
image.png
到應(yīng)用程序,打開 Anaconda Navigator ,會(huì)展示出已經(jīng)安裝好的其他常用應(yīng)用,如:
- Anaconda Navigtor :用于管理工具包和環(huán)境的圖形用戶界面,后續(xù)涉及的眾多管理命令也可以在 Navigator 中手工實(shí)現(xiàn)。
- Jupyter notebook :基于web的交互式計(jì)算環(huán)境,可以編輯易于人們閱讀的文檔,用于展示數(shù)據(jù)分析的過程。
- qtconsole :一個(gè)可執(zhí)行 IPython 的仿終端圖形界面程序,相比 Python Shell 界面,qtconsole 可以直接顯示代碼生成的圖形,實(shí)現(xiàn)多行代碼輸入執(zhí)行,以及內(nèi)置許多有用的功能和函數(shù)。
spyder :一個(gè)使用Python語言、跨平臺(tái)的、科學(xué)運(yùn)算集成開發(fā)環(huán)境。
image.png
查看安裝路徑:

3.1.3. 配置
3.1.3.1. 環(huán)境變量
Anaconda 安裝好后,會(huì)自動(dòng)在 ~/.bash_profile 中添加 anaconda 的環(huán)境變量,如下:

因此只需要source一下即可。
anaconda安裝之后,source之前,先看一下當(dāng)前的python:
默認(rèn) python 為 python2:

使用 python3 需使用 python3 指令:

我們來source 一下:

默認(rèn) python 變?yōu)?python3,且是 anaconda 自帶的 python3:

3.1.3.2. 修改conda鏡像源
如不修改conda的鏡像源,99.99%會(huì)報(bào)http鏈接失敗的錯(cuò)誤(網(wǎng)友踩坑經(jīng)驗(yàn))。
輸入以下兩條命令來添加清華源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
此時(shí)你的 ~ 目錄下會(huì)生成隱藏文件 .condarc:

內(nèi)容如下:

刪除其中的第1行、第4行(建議只刪第一行,原因請(qǐng)見3.1.3.3節(jié)),最終版本文件如下:

用命令
conda info
查看當(dāng)前配置信息,channel URLs 字段內(nèi)容內(nèi)容如下,即修改成功。

若未刪除第4行,則還會(huì)有默認(rèn)的鏡像源:

3.1.3.3. python2 python3 切換
- 創(chuàng)建python3.7環(huán)境(圖形界面)
image.png
image.png
image.png
報(bào)錯(cuò)——當(dāng)前鏡像源獲取不到python3.7的包:
image.png
解決方法:修改~/.condarc,增加 -defaults ,將默認(rèn)鏡像源添加進(jìn)來:
image.png
保存退出,輸入:
conda info
查看配置信息,默認(rèn)鏡像源已恢復(fù):

重新創(chuàng)建python3.7環(huán)境,成功:


使用如下命令,查看當(dāng)前有哪些環(huán)境:
conda info -e

星號(hào)表示當(dāng)前激活的環(huán)境。
激活py37環(huán)境:
source activate py37
或
conda activate py37

- 創(chuàng)建python2.7環(huán)境(命令行方式)
輸入以下命令,創(chuàng)建python2.7環(huán)境:
conda create -n py27 python=2.7
或
conda create --name py27 python=2.7

創(chuàng)建成功:

Anaconda 圖形界面也顯示了 py27:

激活py27環(huán)境:
conda activate py27

3.2. Windows 10
前往 anaconda官網(wǎng),選擇版本(建議 Python 3.7),下載 :

3.2.1. 安裝
安裝請(qǐng)參考 http://www.cnblogs.com/IT-LearnHall/p/9486029.html
3.2.2. 配置
3.2.2.1. 配置環(huán)境變量
右鍵“此電腦”,依次點(diǎn)擊“屬性”->"高級(jí)系統(tǒng)設(shè)置"->"環(huán)境變量",雙擊“用戶變量“中的path:

點(diǎn)擊”新建“,新增三個(gè)環(huán)境變量(注意第三個(gè)環(huán)境變量一定要加,否則創(chuàng)建環(huán)境或者安裝包的時(shí)候會(huì)報(bào)錯(cuò):CondaHTTPError: HTTP 000 CONNECTION FAILED for url):
C:\Users\sille\Anaconda3
C:\Users\sille\Anaconda3\Scripts
C:\Users\sille\Anaconda\Library\bin
點(diǎn)擊確定。
打開終端,輸入
conda --version
正確顯示版本號(hào),則環(huán)境變量設(shè)置成功:

3.2.2.2. 更改鏡像源
同mac版,請(qǐng)見3.1.3.2.節(jié)。
3.2.2.3. (命令方式)創(chuàng)建 python3.7環(huán)境
查看當(dāng)前有哪些環(huán)境:
conda info -e
或
conda info --envs
只有一個(gè)base環(huán)境:

打開 Anaconda 圖形界面,同樣顯示只有一個(gè)環(huán)境——base(root):

輸入以下命令,創(chuàng)建python3.7環(huán)境:
conda create -n py37 python=3.7
或
conda create --name py37 python=3.7
失敗了,提示當(dāng)前鏡像源找不到python3.7的包。

原因是:在上一節(jié)更改鏡像源的時(shí)候,刪掉了 -defaults 這一行,導(dǎo)致默認(rèn)鏡像源被去掉了,只保留了新增的清華鏡像源,這一鏡像源可能對(duì)于較新的包更新較慢。
解決方法:打開 C:\Users\用戶名下的隱藏文件 .condarc,增加 -defaults 這一行,如下圖所示。

輸入命令,查看當(dāng)前鏡像源:
conda info
可見,默認(rèn)鏡像源已經(jīng)添加進(jìn)來:

再次執(zhí)行命令,創(chuàng)建python3.7環(huán)境:
conda create -n py37 python=3.7


至此,python3.7環(huán)境已經(jīng)創(chuàng)建完成。
打開 anaconda 圖形界面,也可以看到剛創(chuàng)建的py37:

激活 py37環(huán)境:
activate py37
激活成功后,終端前面的括號(hào)中會(huì)顯示環(huán)境名。
查看當(dāng)前環(huán)境的python版本:
python --version

查看安裝了哪些包:
conda list

3.2.2.4. (圖形界面)創(chuàng)建 python2.7環(huán)境
4. 使用
4.1. 在指定環(huán)境下載指定包

5. 常用命令
5.1. 管理環(huán)境
5.1.1. 打開anaconda的anaconda prompt查看當(dāng)前環(huán)境:
conda info -e
或
conda info --envs
5.1.2. 創(chuàng)建新的環(huán)境
- 創(chuàng)建新的環(huán)境(名為py27),并指定運(yùn)行環(huán)境為python2.7
conda create -n py27 python=2.7
或
conda create --name py27 python=2.7
- 創(chuàng)建新環(huán)境,并安裝包
conda create -n env_name numpy matplotlib python=2.7
5.1.3. 顯示已創(chuàng)建的環(huán)境
conda info --envs
# 或
conda info -e
# 或
conda env list

5.1.4. 激活及退出環(huán)境
- 激活環(huán)境
macOS:
conda activate py27
或
source activate py27
windows:
activate py27
以macOS 為例:

- 退出環(huán)境
macOS:
conda deactivate
或
source deactivate
windows:
deactivate
以 macOS 為例:

當(dāng)執(zhí)行"退出當(dāng)前環(huán)境",回到root環(huán)境命令后,原本行首以“(env_name)”或“[env_name]”開頭的字符將不再顯示。
5.1.5. 復(fù)制環(huán)境
conda create --name new_env_name --clone copied_env_name
注意:
- copied_env_name 即為被復(fù)制/克隆環(huán)境名
- new_env_name 即為復(fù)制之后新環(huán)境的名稱
- 如:conda create --name py2 --clone python2,即為克隆名為“python2”的環(huán)境,克隆后的新環(huán)境名為“py2”。此時(shí),環(huán)境中將同時(shí)存在“python2”和“py2”環(huán)境,且兩個(gè)環(huán)境的配置相同。
5.1.6. 刪除環(huán)境
conda remove --name env_name --all
env_name> 為被刪除環(huán)境的名稱。
5.2. 管理包
5.2.1. 檢查新環(huán)境下的python版本以及在創(chuàng)建環(huán)境時(shí)conda自動(dòng)安裝了那些必須的包
#查看python版本
python --version
#查看安裝了那些包
conda list
#或者
conda list -n python27
5.2.1. 安裝包
給某個(gè)特定環(huán)境安裝包。
- 切換到環(huán)境安裝在安裝
activate env_name
conda isntall pkg_name
- 直接在別的環(huán)境安裝
conda install -n env_name pkg_name





















