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_mac.png
下載完成,得到安裝器軟件包:
pkg.png -
開始安裝
雙擊安裝包,開始安裝:
image.png
點擊繼續。
image.png
點擊繼續。
read.png - 閱讀重要信息(不關注細節的可忽略,直接下一步):
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真是好用啊!
-
繼續安裝
image.png
image.png
選擇“在特定的磁盤上安裝...”,安裝在根目錄。(根據個人需求選擇)
image.png
image.png
點擊“安裝”。
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 是一個免費、開源、流線型的跨平臺代碼編輯器,可以很好地支持python代碼編輯、智能感知、調試、代碼控制等。
image.png
點擊“Install Microsoft VSCode”。
需在線安裝,網絡不好,安裝失敗。
image -
安裝成功
image.png
到應用程序,打開 Anaconda Navigator ,會展示出已經安裝好的其他常用應用,如:
- Anaconda Navigtor :用于管理工具包和環境的圖形用戶界面,后續涉及的眾多管理命令也可以在 Navigator 中手工實現。
- Jupyter notebook :基于web的交互式計算環境,可以編輯易于人們閱讀的文檔,用于展示數據分析的過程。
- qtconsole :一個可執行 IPython 的仿終端圖形界面程序,相比 Python Shell 界面,qtconsole 可以直接顯示代碼生成的圖形,實現多行代碼輸入執行,以及內置許多有用的功能和函數。
spyder :一個使用Python語言、跨平臺的、科學運算集成開發環境。
image.png
查看安裝路徑:
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環境(圖形界面)
image.png
image.png
image.png
報錯——當前鏡像源獲取不到python3.7的包:
image.png
解決方法:修改~/.condarc,增加 -defaults ,將默認鏡像源添加進來:
image.png
保存退出,輸入:
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