很多小伙伴在學(xué)習(xí)使用 python 進(jìn)行數(shù)據(jù)科學(xué)工作的時(shí)候,可能會(huì)遇到一些工具沖突的情況。這個(gè)時(shí)候單獨(dú)使用 pip 就不能較好的解決包沖突的問題了。接下來小編要介紹的這個(gè)工具,是一個(gè)獨(dú)立于 python 之外的包管理工具,他就是 conda。
許多人認(rèn)為conda和pip功能幾乎完全相同,所以使用pip就足夠了。但實(shí)際上它們的用途其實(shí)是不同的。pip的主要用途是從python的pypi上下載安裝包,并進(jìn)行包的管理工具,管理對(duì)象是python的第三方庫;而conda的作用不僅僅是對(duì)第三方庫進(jìn)行管理,它還可以管理編譯器。所以pip只是包管理器,而conda是包和環(huán)境管理器。此外,他們安裝的文件也有所不同,pip安裝打包為wheels或源代碼分發(fā)的python軟件,而conda可以安裝包含用任何語言編寫的軟件的包,也就是說,conda包不僅僅只限于python軟件,也有可能包含C或C++庫,R語言包或者其他軟件。
conda與pip的另外一大區(qū)別就是,conda可以創(chuàng)建包含不同版本的python或者其他軟件包的隔離環(huán)境,比如python3.6版本和python2.7版本。這對(duì)使用數(shù)據(jù)科學(xué)工具相當(dāng)有用,因?yàn)橛行?shù)據(jù)科學(xué)工具對(duì)python版本有所要求,不同的工具要求不同則會(huì)產(chǎn)生沖突,這樣就不能將他們安裝到單個(gè)環(huán)境中。使用pip只能依賴python虛擬化工具來創(chuàng)建隔離環(huán)境,并不能將多個(gè)要求不同版本python的軟件包安裝到一起。
最后conda和pip還有一大區(qū)別就是它們對(duì)于依賴的管理。pip的依賴管理不會(huì)確保同時(shí)滿足所有包的依賴性,如果較早安裝的軟件包和稍后安裝的軟件包具有不兼容的依賴性版本,則有可能破壞環(huán)境。而使用conda會(huì)確保環(huán)境中安裝的所有包的所有要求。
因?yàn)閏onda與pip具有不同的功能,所以有些人就會(huì)選擇將這些工具結(jié)合起來。因?yàn)橛行┌荒苡胮ip進(jìn)行安裝,而conda提供了最流行的數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)和al框架,在使用conda進(jìn)行包管理的時(shí)候,如果遇到?jīng)]有conda包但在pypi上有的情況,就可以使用pip進(jìn)行解決。
以上關(guān)于conda介紹就到這里,更多conda的使用教程,敬請(qǐng)關(guān)注W3C技術(shù)頭條的后續(xù)文章。