一、軟件包管束系統(tǒng)的性質(zhì)
1. pip
pip是Python的官方包管束器具。它主要用于裝置、升級(jí)和卸載Python包。它從Python Package Index (PyPI)取得包。
舉例開(kāi)云體育,當(dāng)你思要裝置一個(gè)像`numpy`這么的Python庫(kù)時(shí),你不錯(cuò)粗放地在號(hào)令行中輸入`pip install numpy`。
2. conda
conda是一個(gè)開(kāi)源的包管束系統(tǒng)和環(huán)境管束系統(tǒng)。它不僅不錯(cuò)管束Python包,還不錯(cuò)管束非Python包,比如R講話包等。
Conda有我方的軟件包倉(cāng)庫(kù),它不錯(cuò)從Anaconda倉(cāng)庫(kù)、Anaconda Cloud或土產(chǎn)貨的conda server取得包。舉例,`conda install numpy`不錯(cuò)裝置`numpy`包。
二、環(huán)境管束方面
1. pip
pip自身莫得內(nèi)置的環(huán)境管束功能。若是你思要管束不同的Python環(huán)境(舉例,有不同版塊的Python和不同版塊的庫(kù)的環(huán)境),你需要借助其他器具,如`virtualenv`或`venv`。
舉例,使用`venv`創(chuàng)建一個(gè)新的編造環(huán)境`myenv`,你需要先推論`python -m venv myenv`,然后激活這個(gè)環(huán)境,再使用pip裝置包。
2. conda
conda具有宏大的環(huán)境管束功能。你不錯(cuò)疲塌地創(chuàng)建、復(fù)制、刪除和切換不同的環(huán)境。
舉例,你不錯(cuò)使用`conda create -n mycondaenv python=3.8`創(chuàng)建一個(gè)名為`mycondaenv`的環(huán)境,其中Python版塊為3.8。然后你不錯(cuò)使用`conda activate mycondaenv`激活這個(gè)環(huán)境,并在其中使用`conda install`裝置包。
三、依賴聯(lián)系處理
1. pip
pip在裝置包時(shí)會(huì)逐一裝置所需的依賴項(xiàng)??墒牵赡軙?huì)遭受依賴打破的問(wèn)題,尤其是在復(fù)雜的格式中。
舉例,當(dāng)你裝置一個(gè)庫(kù)`A`,它依賴于庫(kù)`B`的1.0版塊,而你依然裝置了庫(kù)`B`的2.0版塊,這可能會(huì)導(dǎo)致裝置失敗或步調(diào)開(kāi)動(dòng)時(shí)出現(xiàn)問(wèn)題。
2. conda
conda在處理依賴聯(lián)系方面愈加智能。它會(huì)商量通盤這個(gè)詞環(huán)境中的依賴聯(lián)系,并嘗試找到一個(gè)兼容的科罰決策。
舉例,當(dāng)你要裝置一個(gè)包時(shí),conda會(huì)查驗(yàn)現(xiàn)存的環(huán)境和要裝置的包的依賴聯(lián)系,盡量幸免打破,找到一個(gè)能讓通盤這個(gè)詞環(huán)境自如開(kāi)動(dòng)的裝置決策。
四、裝置的軟件包限制
1. pip
只專注于Python包的裝置。它不行裝置非Python的軟件或庫(kù)。
舉例,你不行用pip裝置像`libxml2`這么的C/C++庫(kù)。
2. conda
不錯(cuò)裝置多種類型的軟件包,包括Python包、C/C++庫(kù)、R講話包等。
舉例,除了Python庫(kù),你不錯(cuò)使用`conda install r base`來(lái)裝置R講話的基礎(chǔ)包,浮淺在消失環(huán)境中進(jìn)行數(shù)據(jù)科學(xué)責(zé)任,集成了多種講話的建樹(shù)環(huán)境。