這小伙好有料 · 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安裝。 ![]() 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 ![]() 因為我安裝了多個Python版本,所以使用的pip3命令。 上面會顯示你的pip版本號,19.0.3是最新的版本。 pip有哪些命令可以使用,可以使用 pip help 命令來查看: ![]() 如上圖有: pip install 安裝軟件包 pip download 只下載軟件包不安裝 pip uninstall 卸載軟件包 pip list 顯示已安裝了哪些軟件包 pip search 在pypi上模糊搜索軟件包等等… 下面就介紹幾個常用的命令 用pip install如何安裝第三方包 上面已經舉例子了,如果你知道具體軟件包的名字,就直接使用 pip install 軟件包名 進行安裝,這樣會安裝該軟件的最新版本。同時pip會計算該軟件的依賴包,如果沒有沖突,就會一并把該軟件包的依賴包一起安裝了。 什么是依賴?就是一個軟件要依賴另一個軟件的功能才能運行,必須要把相關的依賴包都安裝了,才能愉快的使用。 我們拿安裝requests庫來舉例。 ![]() 安裝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./simple 比如使用清華大學鏡像源安裝就是: pip install -i https://pypi.tuna./simple 軟件包名 但是鏡像源沒法實時做到更新pypi上的軟件包,所以有些軟件包的版本可能不是最新的。 pip升級軟件包 上面提到了軟件包不是最新的,就說下用pip怎么升級軟件包。 pip install --upgrade 軟件包名 為什么要升級軟件包呢?通常最新版本的軟件在性能和功能上都更完善,還可能會解決一些老版本的bug問題。 升級軟件有什么壞處呢?新版本軟件接口可能會發生變化,或者包依賴關系變動太大,導致不兼容老版本,會導致你的程序運行不起來。 搜索軟件包 上面說了用pip install安裝時要寫完整的軟件包名,記住全名這是比較難的,而且還有李鬼的存在。另外有時只知道功能,不知道軟件名叫什么,就需要使用搜索功能去pypi搜索一下。 pip search 關鍵字 ![]() 比如我需要一個有壓縮功能的第三方庫,可以使用 compress 這個關鍵字去檢索。左邊是第三方庫名,括號里是軟件版本,后邊是簡單的功能描述。 當然,現在要查找第三方庫一般都是借助搜索引擎,搜索引擎的檢索更智能,更相關,或者直接去pypi.org網站上找。 卸載軟件包 使用如下卸載命令: pip uninstall 軟件包名 就可以卸載軟件包,卸載軟件包之前最好先用show命令看一下該軟件包的被依賴關系,如果其它包依賴你要卸載的軟件包,那么你卸載后,其它軟件包就沒法運行了。 pip show 軟件包名 使用pip show命令可以查看該包的一些信息。比如查看requests庫的信息: pip show requests ![]() 可以查看該軟件包的作者,軟件安裝路徑,依賴的庫和被依賴的庫等息息。 要注意看Required-by那一項,如果冒號后面顯示有其他的庫,那你卸載requests庫就要小心,因為它被其他庫依賴了,卸載的話其他庫就會出問題。 顯示本地軟件包 如果我們卸載軟件包,忘記該軟件包名的全稱了呢,可以使用list命令: pip list ![]() list命令顯示本地所有安裝的第三方庫和相應的版本號,這時就可以查看完整的軟件包名是怎么寫的。 導出本地所有軟件包名和版本號 如果你要在另一臺電腦上部署一個相同的Python軟件包環境,尤其是你在本地開發測試好后,要提交到生產環境去運行,要保證軟件包的版本是一致的,上面講了軟件包版本不一致可能會導致程序出錯。 這時就可以使用freeze命令導出本地的軟件包名和版本號。 pip freeze > requirements.txt 上面命令會把軟件包名和版本號導到requirements.txt文件里,如下圖: ![]() 然后把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文件里的==號替換成>=符號 ![]() 意思是安裝大于等于當前版本的軟件包。 升級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版本的軟件包和路徑,不會發生沖突。 |
|