Anaconda、conda、pip、virtualenv的區(qū)別
Anaconda
Anaconda是一個(gè)包含180+的科學(xué)包及其依賴項(xiàng)的發(fā)行版本。其包含的科學(xué)包包括:conda, numpy, scipy, ipython notebook等。
conda
conda是包及其依賴項(xiàng)和環(huán)境的管理工具。
? 適用語(yǔ)言: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,你無(wú)需切換到不同的環(huán)境,因?yàn)閏onda同樣是一個(gè)環(huán)境管理器。僅需要幾條命令,你可以創(chuàng)建一個(gè)完全獨(dú)立的環(huán)境來(lái)運(yùn)行不同的Python版本,同時(shí)繼續(xù)在你常規(guī)的環(huán)境中使用你常用的Python版本
conda為Python項(xiàng)目而創(chuàng)造,但可適用于上述的多種語(yǔ)言。
? conda包和環(huán)境管理器包含于Anaconda的所有版本當(dāng)中。
pip
pip是用于安裝和管理軟件包的包管理器。
? pip編寫(xiě)語(yǔ)言:Python。
? Python中默認(rèn)安裝的版本:
① Python 2.7.9及后續(xù)版本:默認(rèn)安裝,命令為 pip
② Python 3.4及后續(xù)版本:默認(rèn)安裝,命令為 pip3
? pip名稱的由來(lái):pip采用的是遞歸縮寫(xiě)進(jìn)行命名的。其名字被普遍認(rèn)為來(lái)源于2處:
① “Pip installs Packages”(“pip安裝包”)
② “Pip installs Python”(“pip安裝Python”)
virtualenv
virtualenv是用于創(chuàng)建一個(gè)獨(dú)立的Python環(huán)境的工具。
? 解決問(wè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ì)其庫(kù)或庫(kù)的版本進(jìn)行修改,都會(huì)導(dǎo)致程序的中斷。
在共享主機(jī)時(shí),無(wú)法在全局 site-packages 目錄中安裝包。
? virtualenv將會(huì)為它自己的安裝目錄創(chuàng)建一個(gè)環(huán)境,這并不與其他virtualenv環(huán)境共享庫(kù);同時(shí)也可以選擇性地不連接已安裝的全局庫(kù)。
pip 與 conda 比較
→ 依賴項(xiàng)檢查
? pip:
① 不一定會(huì)展示所需其他依賴包。
② 安裝包時(shí)或許會(huì)直接忽略依賴項(xiàng)而安裝,僅在結(jié)果中提示錯(cuò)誤。
? conda:
① 列出所需其他依賴包。
② 安裝包時(shí)自動(dòng)安裝其依賴項(xiàng)。
③ 可以便捷地在包的不同版本中自由切換。
環(huán)境管理
? pip:維護(hù)多個(gè)環(huán)境難度較大。
? conda:比較方便地在不同環(huán)境之間進(jìn)行切換,環(huán)境管理較為簡(jiǎn)單。
→ 對(duì)系統(tǒng)自帶Python的影響
? pip:在系統(tǒng)自帶Python中包的更新/回退版本/卸載將影響其他程序。
? conda:不會(huì)影響系統(tǒng)自帶Python。
適用語(yǔ)言
? pip:僅適用于Python。
? conda:適用于Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。
⑥ conda與pip、virtualenv的關(guān)系
? conda結(jié)合了pip和virtualenv的功能。