本文思路:
Anaconda簡介(是什麼?)
Anaconda的安裝(怎麼搞?)
Conda的環境管理(解決Python2.7和3.6不兼容問題)
配置國內鏡像(解決下載速度問題)
Conda的包管理(日常操作)
Anaconda簡介(是什麼?)
Anaconda是一個用於科學計算的Python發行版,具有跨平臺(支持 Linux, Mac, Windows)、包管理(一站式搞定第三方包兼容安裝問題)、環境管理(方便多版本python並存、切換)的特點。Anaconda利用工具/命令conda來進行package和environment的管理,並且已經包含了Python和相關的配套工具。
這裡先解釋下conda、anaconda這些概念的差別。conda可以理解為一個工具,也是一個可執行命令,其核心功能是包管理與環境管理。包管理與pip的使用類似。Anaconda則是一個打包的集合,裡面預裝好了conda、某個版本的python、眾多packages、科學計算工具等等,所以也稱為Python的一種發行版。其實還有Miniconda,顧名思義,它只包含最基本的內容——python與conda,以及相關的必須依賴項,對於空間要求嚴格的用戶,Miniconda是一種選擇。
進入下文之前,說明一下conda的設計理念——conda將幾乎所有的工具、第三方包都當做package對待,甚至包括python和conda自身!因此,conda打破了包管理與環境管理的約束,能非常方便地安裝各種版本python、各種package並方便地切換。
Anaconda的安裝(怎麼搞?)
下載:Anaconda的下載頁參見官網下載
(https://www.continuum.io/downloads),Linux、Mac、Windows均支持。
安裝:安裝時,會發現有兩個不同版本的Anaconda,分別對應Python 2.7和Python 3.6,兩個版本其實除了這點區別外其他都一樣。因為通過環境管理,我們可以很方便地切換運行時的Python版本。
下載後直接按照說明安裝即可。這裡想提醒一點:儘量按照Anaconda默認的行為安裝——不使用root權限,僅為個人安裝,安裝目錄設置在個人主目錄下(Windows就無所謂了)。這樣的好處是,同一臺機器上的不同用戶完全可以安裝、配置自己的Anaconda,不會互相影響。
對於Mac、Linux系統,Anaconda安裝好後,實際上就是在主目錄下多了個文件夾(~/anaconda)而已,Windows會寫入註冊表。安裝時,安裝程序會把bin目錄加入PATH(Linux/Mac寫入~/.bashrc,Windows添加到系統變量PATH),這些操作也完全可以自己完成。以Linux/Mac為例,安裝完成後設置PATH的操作是
# 將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的環境管理(解決Python2.7和3.6不兼容問題)
Conda的環境管理功能允許我們同時安裝多個不同版本的Python,並可自由切換。假設我們安裝的是Python 2.7版,那麼Python 2.7就是默認的環境。如果我拿到別人的Python代碼是Python 3.6版,那我就不能直接在2.7的環境上運行了,這時我們來一個乾坤大挪移,把Python2.7環境變成Python3.6環境就OK了,代碼就可以正常運行了。
現在我要發功了,乾坤大挪移開始了,要換成Python 3.6,我們需要做如下操作:
# 創建一個名為python36的環境,指定Python版本是3.6
conda create--name python36 python=3.6
# 安裝好後,使用activate激活某個環境
activate python36 # Windows環境下這樣執行
source activate python36 # Linux & Mac環境下這樣執行
# 激活後,會發現terminal輸入的地方多了(python36)的字樣,實際上,
#此時系統做的事情就是把默認2.7環境從PATH中去除,再把3.6對應的命令加入PATH
# 此時,再次輸入
python--version
# 可以得到`Python 3.6.2 :: Anaconda 6.1.1 (64-bit)`,即系統已經切換到了3.6的環境
# 如果想返回默認的python 2.7環境,運行
deactivate python36 # Windows環境下這樣執行
source deactivate python36 # Linux & Mac環境下這樣執行
# 刪除一個已有的環境
conda remove--name python36--all
Linux & Mac環境下用戶安裝的不同python環境都會被放在目錄~/anaconda/envs下,可以在命令中運行conda info -e查看已安裝的環境,當前被激活的環境會顯示有一個星號或者括號。
配置國內鏡像(解決下載速度問題)
配置國內鏡像呢是將包來源下載地址從國外伺服器地址遷移到國內的地址,國外的地址默認是default,國內用的比較多的地址是清華大學的鏡像(https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/)。
為什麼要改掉鏡像呢?因為Anaconda.org的伺服器在國外,下載速度特別慢,所以改到國內的鏡像快很多,現在我們把清華TUNA鏡像源配置為Anaconda倉庫的鏡像,我們將其加入conda的配置即可:
# 添加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的配置,直接手動創建、編輯該文件是相同的效果。
Conda的包管理(日常操作)
包管理就是對倉庫中的包:查看|安裝|更新|查找等操作。
例如,如果需要安裝matplotlib:
# 安裝matplotlib
conda install matplotlib
# conda會從從遠程搜索matplotlib的相關信息和對應的依賴項目
conda的一些常用操作如下:
# 查看當前環境下已安裝的包
# 最新版的conda是從site-packages文件夾中搜索已經安裝的包,不依賴於pip,因此可以顯示出通過各種方式安裝的包
conda list
# 查看某個指定環境的已安裝包
conda list-npython36
# 查找package信息
conda search numpy
# 安裝package
conda install-npython36 numpy
# 如果不用-n指定環境名稱,則被安裝在當前活躍環境
# 也可以通過-c指定通過某個channel安裝
# 更新package
conda update-npython36 numpy
# 刪除package
conda remove-npython36 numpy
前面已經提到,conda將conda、python等都視為package,因此,完全可以使用conda來管理conda和python的版本,例如
# 更新conda,保持conda最新
conda update conda
# 更新anaconda
conda update anaconda
# 更新python
conda update python
# 假設當前環境是python 3.6, conda會將python升級為3.6.x系列的當前最新版本
注意:如果創建新的python環境,比如3.6,運行conda create -n python36 python=3.6之後,conda僅安裝python 3.6相關的必須項,如python, pip等,如果希望該環境像默認環境那樣,安裝anaconda集合包,只需要:
# 在當前環境下安裝anaconda包集合
conda install anaconda
# 結合創建環境的命令,以上操作可以合併為
conda create-npython36 python=3.6anaconda
# 也可以不用全部安裝,根據需求安裝自己需要的package即可
本文參考
Anaconda官網:https://conda.io/docs/user-guide/getting-started.html