博客專(zhuān)欄

EEPW首頁(yè) > 博客 > 扣丁學(xué)堂Python培訓(xùn)之學(xué)習(xí)開(kāi)發(fā)工具Anaconda詳解

扣丁學(xué)堂Python培訓(xùn)之學(xué)習(xí)開(kāi)發(fā)工具Anaconda詳解

發(fā)布人:扣丁客1 時(shí)間:2020-12-29 來(lái)源:工程師 發(fā)布文章

Python易用,但用好卻不易,其中比較頭疼的就是包管理和Python不同版本的問(wèn)題,特別是當(dāng)你使用Windows的時(shí)候。為了解決這些問(wèn)題,有不少發(fā)行版的Python,比如WinPython、Anaconda等,這些發(fā)行版將python和許多常用的package打包,方便pythoners直接使用,此外,還有virtualenv、pyenv等工具管理虛擬環(huán)境。


個(gè)人嘗試了很多類(lèi)似的發(fā)行版,最終選擇了Anaconda,因?yàn)槠鋸?qiáng)大而方便的包管理與環(huán)境管理的功能。該文主要介紹下Anaconda,對(duì)Anaconda的理解,并簡(jiǎn)要總結(jié)下相關(guān)的操作。

Anaconda概述

Anaconda是一個(gè)用于科學(xué)計(jì)算的Python發(fā)行版,支持Linux,Mac,Windows系統(tǒng),提供了包管理與環(huán)境管理的功能,可以很方便地解決多版本python并存、切換以及各種第三方包安裝問(wèn)題。Anaconda利用工具/命令conda來(lái)進(jìn)行package和environment的管理,并且已經(jīng)包含了Python和相關(guān)的配套工具。

這里先解釋下conda、anaconda這些概念的差別。conda可以理解為一個(gè)工具,也是一個(gè)可執(zhí)行命令,其核心功能是包管理與環(huán)境管理。包管理與pip的使用類(lèi)似,環(huán)境管理則允許用戶(hù)方便地安裝不同版本的python并可以快速切換。Anaconda則是一個(gè)打包的集合,里面預(yù)裝好了conda、某個(gè)版本的python、眾多packages、科學(xué)計(jì)算工具等等,所以也稱(chēng)為Python的一種發(fā)行版。其實(shí)還有Miniconda,顧名思義,它只包含最基本的內(nèi)容——python與conda,以及相關(guān)的必須依賴(lài)項(xiàng),對(duì)于空間要求嚴(yán)格的用戶(hù),Miniconda是一種選擇。

進(jìn)入下文之前,說(shuō)明一下conda的設(shè)計(jì)理念——conda將幾乎所有的工具、第三方包都當(dāng)做package對(duì)待,甚至包括python和conda自身!因此,conda打破了包管理與環(huán)境管理的約束,能非常方便地安裝各種版本python、各種package并方便地切換。

Anaconda的安裝

Anaconda的下載頁(yè)參見(jiàn)官網(wǎng)下載,Linux、Mac、Windows均支持。

安裝時(shí),會(huì)發(fā)現(xiàn)有兩個(gè)不同版本的Anaconda,分別對(duì)應(yīng)Python2.7和Python3.5,兩個(gè)版本其實(shí)除了這點(diǎn)區(qū)別外其他都一樣。后面我們會(huì)看到,安裝哪個(gè)版本并不本質(zhì),因?yàn)橥ㄟ^(guò)環(huán)境管理,我們可以很方便地切換運(yùn)行時(shí)的Python版本。(由于我常用的Python是2.7和3.4,因此傾向于直接安裝Python2.7對(duì)應(yīng)的Anaconda)

下載后直接按照說(shuō)明安裝即可。這里想提醒一點(diǎn):盡量按照Anaconda默認(rèn)的行為安裝——不使用root權(quán)限,僅為個(gè)人安裝,安裝目錄設(shè)置在個(gè)人主目錄下(Windows就無(wú)所謂了)。這樣的好處是,同一臺(tái)機(jī)器上的不同用戶(hù)完全可以安裝、配置自己的Anaconda,不會(huì)互相影響。

對(duì)于Mac、Linux系統(tǒng),Anaconda安裝好后,實(shí)際上就是在主目錄下多了個(gè)文件夾(~/anaconda)而已,Windows會(huì)寫(xiě)入注冊(cè)表。安裝時(shí),安裝程序會(huì)把bin目錄加入PATH(Linux/Mac寫(xiě)入~/.bashrc,Windows添加到系統(tǒng)變量PATH),這些操作也完全可以自己完成。以Linux/Mac為例,安裝完成后設(shè)置PATH的操作是

#將anaconda的bin目錄加入PATH,根據(jù)版本不同,也可能是~/anaconda3/bin
echo'exportPATH="~/anaconda2/bin:$PATH"'>>~/.bashrc
#更新bashrc以立即生效
source~/.bashrc


配置好PATH后,可以通過(guò)whichconda或conda--version命令檢查是否正確。假如安裝的是Python2.7對(duì)應(yīng)的版本,運(yùn)行python--version或python-V可以得到Python2.7.12::Anaconda4.1.1(64-bit),也說(shuō)明該發(fā)行版默認(rèn)的環(huán)境是Python2.7。

Conda的環(huán)境管理

Conda的環(huán)境管理功能允許我們同時(shí)安裝若干不同版本的Python,并能自由切換。對(duì)于上述安裝過(guò)程,假設(shè)我們采用的是Python2.7對(duì)應(yīng)的安裝包,那么Python2.7就是默認(rèn)的環(huán)境(默認(rèn)名字是root,注意這個(gè)root不是超級(jí)管理員的意思)。

假設(shè)我們需要安裝Python3.4,此時(shí),我們需要做的操作如下:

  #創(chuàng)建一個(gè)名為python34的環(huán)境,指定Python版本是3.4(不用管是3.4.x,conda會(huì)為我們自動(dòng)尋找3.4.x中的最新版本)
  condacreate--namepython34python=3.4
  #安裝好后,使用activate激活某個(gè)環(huán)境
  activatepython34#forWindows
  sourceactivatepython34#forLinux&Mac
  #激活后,會(huì)發(fā)現(xiàn)terminal輸入的地方多了python34的字樣,實(shí)際上,此時(shí)系統(tǒng)做的事情就是把默認(rèn)2.7環(huán)境從PATH中去除,再把3.4對(duì)應(yīng)的命令加入PATH
  #此時(shí),再次輸入
  python--version
  #可以得到`Python3.4.5::Anaconda4.1.1(64-bit)`,即系統(tǒng)已經(jīng)切換到了3.4的環(huán)境
  #如果想返回默認(rèn)的python2.7環(huán)境,運(yùn)行
  deactivatepython34#forWindows
  sourcedeactivatepython34#forLinux&Mac
  #刪除一個(gè)已有的環(huán)境
  condaremove--namepython34--all


用戶(hù)安裝的不同python環(huán)境都會(huì)被放在目錄~/anaconda/envs下,可以在命令中運(yùn)行condainfo-e查看已安裝的環(huán)境,當(dāng)前被激活的環(huán)境會(huì)顯示有一個(gè)星號(hào)或者括號(hào)。

說(shuō)明:有些用戶(hù)可能經(jīng)常使用python3.4環(huán)境,因此直接把~/anaconda/envs/python34下面的bin或者Scripts加入PATH,去除anaconda對(duì)應(yīng)的那個(gè)bin目錄。這個(gè)辦法,怎么說(shuō)呢,也是可以的,但總覺(jué)得不是那么elegant……

如果直接按上面說(shuō)的這么改PATH,你會(huì)發(fā)現(xiàn)conda命令又找不到了(當(dāng)然找不到啦,因?yàn)閏onda在~/anaconda/bin里呢),這時(shí)候怎么辦呢?方法有二:1.顯式地給出conda的絕對(duì)地址2.在python34環(huán)境中也安裝conda工具(推薦)。

Conda的包管理

Conda的包管理就比較好理解了,這部分功能與pip類(lèi)似。

例如,如果需要安裝scipy:

  #安裝scipy
  condainstallscipy
  #conda會(huì)從從遠(yuǎn)程搜索scipy的相關(guān)信息和依賴(lài)項(xiàng)目,對(duì)于python3.4,conda會(huì)同時(shí)安裝numpy和mkl(運(yùn)算加速的庫(kù))
  #查看已經(jīng)安裝的packages
  condalist
  #最新版的conda是從site-packages文件夾中搜索已經(jīng)安裝的包,不依賴(lài)于pip,因此可以顯示出通過(guò)各種方式安裝的包


conda的一些常用操作如下:

  #查看當(dāng)前環(huán)境下已安裝的包
  condalist
  #查看某個(gè)指定環(huán)境的已安裝包
  condalist-npython34
  #查找package信息
  condasearchnumpy
  #安裝package
  condainstall-npython34numpy
  #如果不用-n指定環(huán)境名稱(chēng),則被安裝在當(dāng)前活躍環(huán)境
  #也可以通過(guò)-c指定通過(guò)某個(gè)channel安裝
  #更新package
  condaupdate-npython34numpy
  #刪除package
  condaremove-npython34numpy


前面已經(jīng)提到,conda將conda、python等都視為package,因此,完全可以使用conda來(lái)管理conda和python的版本,例如

  #更新conda,保持conda最新
  condaupdateconda
  #更新anaconda
  condaupdateanaconda
  #更新python
  condaupdatepython
  #假設(shè)當(dāng)前環(huán)境是python3.4,conda會(huì)將python升級(jí)為3.4.x系列的當(dāng)前最新版本


補(bǔ)充:如果創(chuàng)建新的python環(huán)境,比如3.4,運(yùn)行condacreate-npython34python=3.4之后,conda僅安裝python3.4相關(guān)的必須項(xiàng),如python,pip等,如果希望該環(huán)境像默認(rèn)環(huán)境那樣,安裝anaconda集合包,只需要:

  #在當(dāng)前環(huán)境下安裝anaconda包集合
  condainstallanaconda
  #結(jié)合創(chuàng)建環(huán)境的命令,以上操作可以合并為
  condacreate-npython34python=3.4anaconda
  #也可以不用全部安裝,根據(jù)需求安裝自己需要的package即可


設(shè)置國(guó)內(nèi)鏡像

如果需要安裝很多packages,你會(huì)發(fā)現(xiàn)conda下載的速度經(jīng)常很慢,因?yàn)锳naconda.org的服務(wù)器在國(guó)外。所幸的是,清華TUNA鏡像源有Anaconda倉(cāng)庫(kù)的鏡像,我們將其加入conda的配置即可:

  #添加Anaconda的TUNA鏡像
  condaconfig--addchannelshttps://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  #TUNA的help中鏡像地址加有引號(hào),需要去掉
  #設(shè)置搜索時(shí)顯示通道地址
  condaconfig--setshow_channel_urlsyes


執(zhí)行完上述命令后,會(huì)生成~/.condarc(Linux/Mac)或C:UsersUSER_NAME.condarc文件,記錄著我們對(duì)conda的配置,直接手動(dòng)創(chuàng)建、編輯該文件是相同的效果。

最后想要了解更多關(guān)于Python發(fā)展前景趨勢(shì),請(qǐng)關(guān)注扣丁學(xué)堂Python培訓(xùn)官網(wǎng)、微信等平臺(tái),扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育平臺(tái)為您提供最新的Python視頻教程系統(tǒng),通過(guò)千鋒扣丁學(xué)堂金牌講師在線錄制的Python視頻教程課程,讓你快速掌握Python從入門(mén)到精通開(kāi)發(fā)實(shí)戰(zhàn)技能??鄱W(xué)堂python學(xué)習(xí)交流群:816572891。微信號(hào):codingbb

*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



關(guān)鍵詞:

相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉