大部分情況下沒什麼區別。基本上,我更喜歡用pip,因為國內用pip網速比conda快哈哈,即便是用了國內源的情況下。
正式一點地說,pip和conda功能相似,但仍然有一些區別,conda官方就有文章專門說這個:https://www.anaconda.com/blog/understanding-conda-and-pip
pip是用來安裝python包的,安裝的是python wheel或者原始碼的包。從源碼安裝的時候需要有編譯器的支持,pip也不會去支持python語言之外的依賴項。
conda是用來安裝conda package,雖然大部分conda包是python的,但它支持了不少非python語言寫的依賴項,比如mkl cuda這種c c++寫的包。然後,conda安裝的都是編譯好的二進位包,不需要你自己編譯。所以,pip有時候系統環境沒有某個編譯器可能會失敗,conda不會。這導致了conda裝東西的體積一般比較大,尤其是mkl這種,動不動幾百兆甚至一G多。
然後,conda功能其實比pip更多。pip幾乎就是個安裝包的軟體,conda是個環境管理的工具。conda自己可以用來創建環境,pip不能,需要依賴virtualenv之類的。意味著你能用conda安裝python解釋器,pip不行。這一點我覺得是conda很有優勢的地方,用conda env可以很輕鬆地管理很多個版本的python,pip不行。
然後是一些可能不太容易察覺的地方。conda和pip對於環境依賴的處理不同,總體來講,conda比pip更加嚴格,conda會檢查當前環境下所有包之間的依賴關係,pip可能對之前安裝的包就不管了。這樣做的話,conda基本上安上了就能保證工作,pip有時候可能裝上了也不work。不過我個人感覺這個影響不大,畢竟主流包的支持都挺不錯的,很少遇到broken的情況。這個區別也導致了安裝的時候conda算依賴項的時間比pip多很多,而且重新安裝的包也會更多(會選擇更新舊包的版本)。
最後,pip的包跟conda不完全重疊,有些包只能通過其中一個裝。
https://www.zhihu.com/question/395145313/answer/1230725052好文章,我在看❤️