Conda和pip通常被認(rèn)為幾乎完全相同太抓。雖然這兩個工具的某些功能重疊,但它們設(shè)計(jì)用于不同的目的令杈。 Pip是Python Packaging Authority推薦的用于從Python Package Index安裝包的工具走敌。 Pip安裝打包為wheels或源代碼分發(fā)的Python軟件。后者可能要求系統(tǒng)安裝兼容的編譯器和庫逗噩。
Conda是跨平臺的包和環(huán)境管理器掉丽,可以安裝和管理來自Anaconda repository以 Anaconda Cloud的conda包。 Conda包是二進(jìn)制文件异雁,徐需要使用編譯器來安裝它們捶障。另外,conda包不僅限于Python軟件纲刀。它們還可能包含C或C ++庫项炼,R包或任何其他軟件。
這是conda和pip之間的關(guān)鍵區(qū)別。 Pip安裝Python包锭部,而conda安裝包可能包含用任何語言編寫的軟件的包暂论。在使用pip之前,必須通過系統(tǒng)包管理器或下載并運(yùn)行安裝程序來安裝Python解釋器拌禾。而Conda可以直接安裝Python包以及Python解釋器取胎。
另一個區(qū)別是conda能夠創(chuàng)建可以包含不同版本的Python或其他軟件包的隔離環(huán)境。在使用數(shù)據(jù)科學(xué)工具時(shí)湃窍,這非常有用扼菠,因?yàn)椴煌墓ぞ呖赡馨瑳_突的要求,這些要求可能會阻止它們?nèi)堪惭b到單個環(huán)境中坝咐。 Pip沒有內(nèi)置的環(huán)境支持循榆,而是依賴于virtualenv或venv 等其他工具來創(chuàng)建隔離環(huán)境。 pipenv墨坚,poetry和hatch wrap pip和virtualenv等工具提供了統(tǒng)一的方法來處理這些環(huán)境秧饮。
Pip和conda在如何實(shí)現(xiàn)環(huán)境中的依賴關(guān)系方面也有所不同。安裝包時(shí)泽篮,pip會在遞歸的串行循環(huán)中安裝依賴項(xiàng)盗尸。沒有努力確保同時(shí)滿足所有包的依賴性。如果較早安裝的軟件包與稍后安裝的軟件包具有不兼容的依賴性版本帽撑,則可能導(dǎo)致破壞的環(huán)境泼各。conda使用可確保滿足環(huán)境中安裝的所有包的所有要求。此檢查可能需要額外的時(shí)間亏拉,但有助于防止創(chuàng)建破壞的環(huán)境扣蜻,前期關(guān)于依賴關(guān)系包的元數(shù)據(jù)是正確的。
考慮到conda和pip之間的相似性及塘,有些人試圖將這些工具結(jié)合起來創(chuàng)建數(shù)據(jù)科學(xué)環(huán)境也就不足為奇了莽使。將pip與conda結(jié)合的主要原因是有些包只能通過pip安裝。 Anaconda創(chuàng)酷提供超過1,500個軟件包笙僚,包括最流行的數(shù)據(jù)科學(xué)芳肌,機(jī)器學(xué)習(xí)和AI框架。這些肋层,以及包括conda-forge和bioconda在內(nèi)的數(shù)據(jù)通過Anaconda云提供的數(shù)千個附加軟件包亿笤,可以使用conda進(jìn)行安裝。盡管有大量的軟件包栋猖,但與PyPI上提供的150,000多個軟件包相比净薛,它仍然很小。有時(shí)候需要的包沒有conda包掂铐,但在PyPI上有罕拂,可以用pip安裝。
完整內(nèi)容參見 python包管理工具:Conda和pip比較 - 磁石空杯 - 博客園 (cnblogs.com)