pip安裝和使用入門指南

王平發表於2019-04-15

​pip新手要看的入門教程,包含pip安裝和pip 各個引數使用的具體用法, 熟練使用pip可以更方便的管Python第三方庫。

 

pip是什麼

不免俗套的要先介紹一下,pip是Python的第三方包(庫)管理器,可以很方便的安裝,解除安裝,升級,檢視Python第三方庫。Python有內建的標準庫,在你安裝完Python後這些標準庫都已預設安裝好了,但是還有很多有用的Pyhon庫不是內建安裝的,我們叫這些庫為第三方庫,要透過pip來安裝和管理第三方庫,還會管理庫之間的依賴(dependency)關係。

舉例:

Python的預設網路請求庫是urllib,在Python安裝的時候就已經是自帶的,我們叫著這種為內建庫,或標準庫。但是有更好用的網路請求庫:requests,它需要額外安裝,比如使用

pip install requests

命令來安裝,這種需要額外安裝的庫就叫做第三方庫。pip就是來安裝和管理第三方庫的。

下面說的軟體包都指代第三方庫。

題外話:

不是所有的第三方Python包都能透過pip來安裝,只能是釋出在pypi.org上面的才能透過pip安裝。

pip要安裝的包都在pypi上

 

pypi又是什麼?

pypi是一個倉庫,上面存放了大量的Python第三方軟體包,是由Python官方社群維護。只要遵守pypi的規則,所有開發者都可以把自己開發的Python軟體包釋出在pypi上,供其他人下載使用。

我們透過:

pip install requests

命令安裝requests庫時,其實就是pip從pypi上面下載下來進行安裝的。

剛才說了不是所有的Python第三方庫都能用pip安裝,只有釋出在pypi上的才能用pip。 還有很多開發者只把自己的Python軟體釋出在github上的(有的在pypi和github上都會發布),這種就需要你在github上把原始碼下載下來進行安裝。

閒扯了下pip和pypi的關係,我們繼續說pip的事情。

從Pyhon3.4以後pip都預設跟著Python一塊安裝的。你可以使用如下命令來檢查pip是否安裝和pip的版本號:

pip --version

檢視pip的安裝版本

因為我安裝了多個Python版本,所以使用的pip3命令。

上面會顯示你的pip版本號,19.0.3是最新的版本。

pip有哪些命令可以使用,可以使用

pip help

命令來檢視:

pip有哪些命令引數

如上圖有:

pip install 安裝軟體包

pip download 只下載軟體包不安裝

pip uninstall 解除安裝軟體包

pip list 顯示已安裝了哪些軟體包

pip search 在pypi上模糊搜尋軟體包等等…

下面就介紹幾個常用的命令

 

用pip install如何安裝第三方包

上面已經舉例子了,如果你知道具體軟體包的名字,就直接使用

pip install 軟體包名

進行安裝,這樣會安裝該軟體的最新版本。同時pip會計算該軟體的依賴包,如果沒有衝突,就會一併把該軟體包的依賴包一起安裝了。

什麼是依賴?就是一個軟體要依賴另一個軟體的功能才能執行,必須要把相關的依賴包都安裝了,才能愉快的使用。

我們拿安裝requests庫來舉例。

pip的安裝示例

安裝requests時,會向pypi上去查詢這個包,然後計算和安裝依賴,可以看出requests還依賴chardet、idna、urllib3這些包,所以會一併安裝。

如果要安裝指定版本的軟體包呢?

pip install requests==2.21.0

就在軟體包名後面加一個具體的版本號,比如上面就是安裝requests的2.21.0版本

 

pip映象源安裝軟體包

在用pip install安裝時,是直接下載pypi上的軟體,各種原因我們訪問國外網站有時比較慢,可能在安裝時會很慢,甚至提示超時,安裝失敗。

所以國內有公司和大學就映象了pypi,把上面的軟體包都映象到國內,透過他們的映象源安裝就會很快。

比較典型的映象源有:

豆瓣:http://pypi.douban.com/simple/

阿里雲:http://mirrors.aliyun.com/pypi/simple/

清華:https://pypi.tuna.tsinghua.edu.cn/simple

比如使用清華大學映象源安裝就是:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 軟體包名

但是映象源沒法實時做到更新pypi上的軟體包,所以有些軟體包的版本可能不是最新的。

 

pip升級軟體包

上面提到了軟體包不是最新的,就說下用pip怎麼升級軟體包。

pip install --upgrade 軟體包名

為什麼要升級軟體包呢?通常最新版本的軟體在效能和功能上都更完善,還可能會解決一些老版本的bug問題。

升級軟體有什麼壞處呢?新版本軟體介面可能會發生變化,或者包依賴關係變動太大,導致不相容老版本,會導致你的程式執行不起來。

 

搜尋軟體包

上面說了用pip install安裝時要寫完整的軟體包名,記住全名這是比較難的,而且還有李鬼的存在。另外有時只知道功能,不知道軟體名叫什麼,就需要使用搜尋功能去pypi搜尋一下。

pip search 關鍵字

pip 搜尋軟體包

比如我需要一個有壓縮功能的第三方庫,可以使用 compress 這個關鍵字去檢索。左邊是第三方庫名,括號裡是軟體版本,後邊是簡單的功能描述。

當然,現在要查詢第三方庫一般都是藉助搜尋引擎,搜尋引擎的檢索更智慧,更相關,或者直接去pypi.org網站上找。

 

解除安裝軟體包

使用如下解除安裝命令:

pip uninstall 軟體包名

就可以解除安裝軟體包,解除安裝軟體包之前最好先用show命令看一下該軟體包的被依賴關係,如果其它包依賴你要解除安裝的軟體包,那麼你解除安裝後,其它軟體包就沒法執行了。

pip show 軟體包名

使用pip show命令可以檢視該包的一些資訊。比如檢視requests庫的資訊:

pip show requests

pip顯示軟體包資訊

可以檢視該軟體包的作者,軟體安裝路徑,依賴的庫和被依賴的庫等息息。

要注意看Required-by那一項,如果冒號後面顯示有其他的庫,那你解除安裝requests庫就要小心,因為它被其他庫依賴了,解除安裝的話其他庫就會出問題。

 

顯示本地軟體包

如果我們解除安裝軟體包,忘記該軟體包名的全稱了呢,可以使用list命令:

pip list

pip list顯示本地安裝了哪些包

list命令顯示本地所有安裝的第三方庫和相應的版本號,這時就可以檢視完整的軟體包名是怎麼寫的。

 

匯出本地所有軟體包名和版本號

如果你要在另一臺電腦上部署一個相同的Python軟體包環境,尤其是你在本地開發測試好後,要提交到生產環境去執行,要保證軟體包的版本是一致的,上面講了軟體包版本不一致可能會導致程式出錯。

這時就可以使用freeze命令匯出本地的軟體包名和版本號。

pip freeze > requirements.txt

上面命令會把軟體包名和版本號導到requirements.txt檔案裡,如下圖:

pip freeze命令匯出軟體包名和版本號到本地檔案

然後把requirements.txt檔案複製到另一臺機器上,執行如下命令:

pip install -r requirements.txt

就會在另一臺機器上完全安裝跟本地一模一樣的軟體包環境。這比較方便開發和部署,以免本地的軟體包和生產環境的不一致。

上面講了解除安裝指定的軟體包命令是:

pip uninstall 軟體包名

那麼要一鍵解除安裝全部的第三方軟體包呢?也是可以使用requirements.txt檔案:

pip uninstall -r requirements.txt

這樣可以一鍵解除安裝所有的第三方軟體包,因為requirements.txt檔案裡包含了所有的第三方軟體包。

上面也講了升級指定軟體包的命令是:

pip install upgrade 軟體包名

那麼要一鍵升級所有的第三方軟體包呢?

pip install --upgrade -r requirements.txt

是的,也是使用requirements.txt檔案來實現,但是要把requirements.txt檔案裡的==號替換成>=符號

利用requirements檔案一鍵升級pip本地包

意思是安裝大於等於當前版本的軟體包。

 

升級pip

pip自身有時也需要升級,你在使用pip install安裝的時候可能遇到過如下提示:

You are using pip version 18.1, however version 19.0.1 is available

意思是你現在用的版本是18.1,提示你要升級到19.0.1最新的pip版本上,如何升級pip呢?

python -m pip install --upgrade pip

上述命令會把pip升級到最新版本,要注意的是要保證整個升級動作完成,不要中途斷網或中斷,不但會導致安裝失敗,還會導致你的pip也無法使用了。

 

pip install入門指南說完了,當然python的包管理工具也不只有pip。

還有Conda、Pipenv、Poetry等,哪個用得熟練就用那個。

另外,Conda、Pipenv的好處是不只是包管理工具,還能管理虛擬路徑。就是你電腦如果安裝了多個版本的Python,比如同時有2.7/3.4/3.7的Python,它能很好管理每個Python版本的軟體包和路徑,不會發生衝突。

猿人學banner宣傳圖

我的公眾號:猿人學 Python 上會分享更多心得體會,敬請關注。

***版權申明:若沒有特殊說明,文章皆是猿人學 yuanrenxue.com 原創,沒有猿人學授權,請勿以任何形式轉載。***

相關文章