序python
Python易用,但用好卻不易,其中比較頭疼的就是包管理和Python不一樣版本的問題,特別是當你使用Windows的時候。爲了解決這些問題,有很多發行版的Python,好比WinPython、Anaconda等,這些發行版將python和許多經常使用的package打包,方便pythoners直接使用,此外,還有virtualenv、pyenv等工具管理虛擬環境。git
我的嘗試了不少相似的發行版,最終選擇了Anaconda,由於其強大而方便的包管理與環境管理的功能。該文主要介紹下Anaconda,對Anaconda的理解,並簡要總結下相關的操做。github
Anaconda是一個用於科學計算的Python發行版,支持 Linux, Mac, Windows系統,提供了包管理與環境管理的功能,能夠很方便地解決多版本python並存、切換以及各類第三方包安裝問題。Anaconda利用工具/命令conda
來進行package和environment的管理,而且已經包含了Python和相關的配套工具。bash
這裏先解釋下conda、anaconda這些概念的差異。conda
能夠理解爲一個工具,也是一個可執行命令,其核心功能是包管理與環境管理。包管理與pip的使用相似,環境管理則容許用戶方便地安裝不一樣版本的python並能夠快速切換。Anaconda則是一個打包的集合,裏面預裝好了conda、某個版本的python、衆多packages、科學計算工具等等,因此也稱爲Python的一種發行版。其實還有Miniconda,顧名思義,它只包含最基本的內容——python與conda,以及相關的必須依賴項,對於空間要求嚴格的用戶,Miniconda是一種選擇。服務器
進入下文以前,說明一下conda的設計理念——conda將幾乎全部的工具、第三方包都當作package對待,甚至包括python和conda自身!所以,conda打破了包管理與環境管理的約束,能很是方便地安裝各類版本python、各類package並方便地切換。工具
Anaconda的下載頁參見官網下載,Linux、Mac、Windows均支持。url
安裝時,會發現有兩個不一樣版本的Anaconda,分別對應Python 2.7和Python 3.5,兩個版本其實除了這點區別外其餘都同樣。後面咱們會看到,安裝哪一個版本並不本質,由於經過環境管理,咱們能夠很方便地切換運行時的Python版本。(因爲我經常使用的Python是2.7和3.4,所以傾向於直接安裝Python 2.7對應的Anaconda)spa
下載後直接按照說明安裝便可。這裏想提醒一點:儘可能按照Anaconda默認的行爲安裝——不使用root權限,僅爲我的安裝,安裝目錄設置在我的主目錄下(Windows就無所謂了)。這樣的好處是,同一臺機器上的不一樣用戶徹底能夠安裝、配置本身的Anaconda,不會互相影響。設計
對於Mac、Linux系統,Anaconda安裝好後,實際上就是在主目錄下多了個文件夾(~/anaconda
)而已,Windows會寫入註冊表。安裝時,安裝程序會把bin目錄加入PATH(Linux/Mac寫入~/.bashrc
,Windows添加到系統變量PATH),這些操做也徹底能夠本身完成。以Linux/Mac爲例,安裝完成後設置PATH的操做是code
1
2
3
4
|
# 將anaconda的bin目錄加入PATH,根據版本不一樣,也多是~/anaconda3/bin
echo 'export PATH="~/anaconda2/bin:$PATH"' >> ~/.bashrc
# 更新bashrc以當即生效
source ~/.bashrc
|
配置好PATH後,能夠經過which conda
或conda --version
命令檢查是否正確。假如安裝的是Python 2.7對應的版本,運行python --version
或python -V
能夠獲得Python 2.7.12 :: Anaconda 4.1.1 (64-bit),也說明該發行版默認的環境是Python 2.7。
Conda的環境管理功能容許咱們同時安裝若干不一樣版本的Python,並能自由切換。對於上述安裝過程,假設咱們採用的是Python 2.7對應的安裝包,那麼Python 2.7就是默認的環境(默認名字是root
,注意這個root不是超級管理員的意思)。
假設咱們須要安裝Python 3.4,此時,咱們須要作的操做以下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
# 建立一個名爲python34的環境,指定Python版本是3.4(不用管是3.4.x,conda會爲咱們自動尋找3.4.x中的最新版本)
conda create --name python34 python=3.4
# 安裝好後,使用activate激活某個環境
activate python34 # for Windows
source activate python34 # for Linux & Mac
# 激活後,會發現terminal輸入的地方多了python34的字樣,實際上,此時系統作的事情就是把默認2.7環境從PATH中去除,再把3.4對應的命令加入PATH
# 此時,再次輸入
python --version
# 能夠獲得`Python 3.4.5 :: Anaconda 4.1.1 (64-bit)`,即系統已經切換到了3.4的環境
# 若是想返回默認的python 2.7環境,運行
deactivate python34 # for Windows
source deactivate python34 # for Linux & Mac
# 刪除一個已有的環境
conda remove --name python34 --all
|
用戶安裝的不一樣python環境都會被放在目錄~/anaconda/envs
下,能夠在命令中運行conda info -e
查看已安裝的環境,當前被激活的環境會顯示有一個星號或者括號。
說明:有些用戶可能常用python 3.4環境,所以直接把~/anaconda/envs/python34
下面的bin或者Scripts加入PATH,去除anaconda對應的那個bin目錄。這個辦法,怎麼說呢,也是能夠的,但總以爲不是那麼elegant……
若是直接按上面說的這麼改PATH,你會發現conda命令又找不到了(固然找不到啦,由於conda在~/anaconda/bin
裏呢),這時候怎麼辦呢?方法有二:1. 顯式地給出conda的絕對地址 2. 在python34環境中也安裝conda工具(推薦)。
Conda的包管理就比較好理解了,這部分功能與pip
相似。
例如,若是須要安裝scipy:
1
2
3
4
5
6
7
|
# 安裝scipy
conda install scipy
# conda會從從遠程搜索scipy的相關信息和依賴項目,對於python 3.4,conda會同時安裝numpy和mkl(運算加速的庫)
# 查看已經安裝的packages
conda list
# 最新版的conda是從site-packages文件夾中搜索已經安裝的包,不依賴於pip,所以能夠顯示出經過各類方式安裝的包
|
conda的一些經常使用操做以下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# 查看當前環境下已安裝的包
conda list
# 查看某個指定環境的已安裝包
conda list -n python34
# 查找package信息
conda search numpy
# 安裝package
conda install -n python34 numpy
# 若是不用-n指定環境名稱,則被安裝在當前活躍環境
# 也能夠經過-c指定經過某個channel安裝
# 更新package
conda update -n python34 numpy
# 刪除package
conda remove -n python34 numpy
|
前面已經提到,conda將conda、python等都視爲package,所以,徹底可使用conda來管理conda和python的版本,例如
1
2
3
4
5
6
7
8
9
|
# 更新conda,保持conda最新
conda update conda
# 更新anaconda
conda update anaconda
# 更新python
conda update python
# 假設當前環境是python 3.4, conda會將python升級爲3.4.x系列的當前最新版本
|
補充:若是建立新的python環境,好比3.4,運行conda create -n python34 python=3.4
以後,conda僅安裝python 3.4相關的必須項,如python, pip等,若是但願該環境像默認環境那樣,安裝anaconda集合包,只須要:
1
2
3
4
5
6
|
# 在當前環境下安裝anaconda包集合
conda install anaconda
# 結合建立環境的命令,以上操做能夠合併爲
conda create -n python34 python=3.4 anaconda
# 也能夠不用所有安裝,根據需求安裝本身須要的package便可
|
若是須要安裝不少packages,你會發現conda下載的速度常常很慢,由於Anaconda.org的服務器在國外。所幸的是,清華TUNA鏡像源有Anaconda倉庫的鏡像,咱們將其加入conda的配置便可:
1
2
3
4
5
6
|
# 添加Anaconda的TUNA鏡像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
# TUNA的help中鏡像地址加有引號,須要去掉
# 設置搜索時顯示通道地址
conda config --set show_channel_urls yes
|
執行完上述命令後,會生成~/.condarc
(Linux/Mac)或C:UsersUSER_NAME.condarc
文件,記錄着咱們對conda的配置,直接手動建立、編輯該文件是相同的效果。
Anaconda具備跨平臺、包管理、環境管理的特色,所以很適合快速在新的機器上部署Python環境。總結而言,整套安裝、配置流程以下:
cheat-sheet 下載:
Conda cheat sheet